Я заметил странное поведение jQuery в Safari.После настройки вызова следующим образом:
$.ajax( {
'url' : url,
'dataType' : 'json',
data : reqdata,
timeout: 20000, //10 secs of timeout
success : function(data, textStatus, XMLHttpRequest) {
console.log("success");
if ((data === null) || (data.length == 0)) {
ts.doAction( {
'actionName' : 'timeout',
'request' : {
'reqdata' : reqdata,
'actionName' : actionName,
'url' : url
},
'controller' : ts
});
}
ts.doAction( {
'actionName' : actionName,
'data' : data
});
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
console.log("error: " + textStatus);
if (textStatus == "timeout") {
ts.doAction( {
'actionName' : 'networkFailureError',
'request' : {
'reqdata' : reqdata,
'actionName' : actionName,
'url' : url
},
'controller' : ts
});
} else {
ts.doAction( {
'actionName' : 'serverError',
'request' : {
'reqdata' : reqdata,
'actionName' : actionName,
'url' : url
},
'controller' : ts
});
}
}
});
Если время ожидания истекло (я выключаю локальный веб-сервер), будет вызван метод «success»!Более того, в параметре textStatus есть строка с «success» !!!Обработчик ошибок даже не вызывается .... (Как вы можете заметить, единственный способ, которым я должен был сообщить о проблеме, - это проверить параметр данных, если он имеет нулевое значение или длину 0 ... Почему такое поведение? Как можноЯ избегаю этого?