Кажется, что обратные вызовы success, error и complete запускаются, только когда ajax-запрос может получить какой-либо ответ от сервера.
Так что, если я выключаю сервер, следующий обратный вызов ошибки не выполняетсяи запрос молча завершается неудачей.
$.ajax({
type: "GET",
url: "http://localhost:3000/",
dataType: "script",
success: function() {
alert("success");
},
error: function() {
alert("error");
}
});
Какой лучший способ выдать ошибку, когда сервер вообще не может быть достигнут.
Правка - Из того, что я пробовал и читалПохоже, что встроенная в JQuery обработка ошибок не работает с JSONP или dataType: «script».Поэтому я попытаюсь установить ручной тайм-аут.
Редактировать - провел немного больше исследований, и похоже, что не только обратный вызов ошибки ajax не работает, но вы не можете прервать запрос ajax с dataTypescript или jsonp, и эти запросы игнорируют настройку тайм-аута.
Есть альтернатива - плагин jquery-jsonp, но он использует скрытые фреймы, которых я бы предпочел избежать.Поэтому я остановился на создании ручного тайм-аута, как предложено ниже.Вы не можете прервать запрос, если он истек, что означает, что скрипт может все еще загружаться даже после истечения времени ожидания, но по крайней мере что-то сработает, если сервер недоступен.