Проблема в том, что Safari (на iphone / ipad и т. Д.) Возвращает 0 вместо 200 (даже если ответ в порядке), как и ожидалось.Это странно, но есть решение для всего.Но я очень озадачен тем, как на самом деле я получаю значение статуса в fail()
-part ...
Я пытался решить проблему с кодом ниже
Se кода ниже: Я получаю xhr.status (его значения на самом деле не определены. Разве это не ноль!?)
var f_useraccounts = $.ajax({
type: 'GET',
data:{
action: 'fetch_useraccounts',
cache: false,
frmSSN: ssn,
frmBank: bank
},
url: ajaxobject.ajax_url,
dataType: 'html'
});
f_useraccounts.done(function(content_data) {
alert('Working fine!'); (
$('#choose-account').html(content_data);
$('#choose-account').show();
$('#autogiro-accounts').hide();
$('#step3step2').css('text-decoration', 'line-through');
});
f_useraccounts.fail(function(xhr) {
//Retry...
ajax_attempts++;
//Safari (iphone/ipad etc) returns zero even if readystate = 4 (done)
//Every other browser in the world returns 200 when status ok
if ( xhr.readyState <4 && xhr.status == 0 ) {
if (ajax_attempts > 4) {
$('#choose-account').hide();
$('#autogiro-accounts').show();
$('#step3step2').css('text-decoration', 'none');
return;
}
$.ajax(this);
return;
}
//Safari (iphone/ipad etc) returns zero even if readystate = 4 (done)
//Every other browser in the world returns 200 when status ok
if ( xhr.readyState == 4 && xhr.status == 0 ) {
$('#choose-account').html(content_data);
$('#choose-account').show();
$('#autogiro-accounts').hide();
$('#step3step2').css('text-decoration', 'line-through');
}
});
});
Я получаю значение xhr.status равным undefined.