Как поймать ошибку в методе jQuery load()
Я использую метод jQuery .load()
для получения некоторых данных, когда пользователь нажимает кнопку.
После успешного завершения загрузки я показываю результат в <div>
.
Проблема в том, что иногда ошибка возникает при load()
при извлечении данных.
Как я могу поймать ошибку в load()
?
Ответы
Ответ 1
load() документация.
Немного о том, как происходит ошибка загрузки...
$("body").load("/someotherpath/feedsx.pxhp", {limit: 25},
function (responseText, textStatus, req) {
if (textStatus == "error") {
return "oh noes!!!!";
}
});
Изменить: добавлен путь, отличный от корневого пути, по запросу комментариев.
Ответ 2
Помимо передачи обратного вызова функции load(), как предлагает Ólafur Waage, вы также можете зарегистрировать "глобальные" обработчики ошибок (глобальные как в глобальном для всех вызовов ajax на странице).
Существует как минимум два способа регистрации глобальных обработчиков ошибок Ajax:
Зарегистрируйте только обработчик ошибок с помощью ajaxError()
:
$.ajaxError(function(event, request, settings) {
alert("Oops!!");
});
Или используйте ajaxSetup()
, чтобы одновременно настроить обработчик ошибок и другие свойства:
$.ajaxSetup({
timeout: 5000,
error: function(event, request, settings){
alert("Oops!");
}
});
Ответ 3
load() предлагает обратный вызов.
Обратный вызов.
Функция, вызываемая при завершении запроса ajax (не обязательно успех).
Вот как это делается IIRC. (не проверял его)
$("#feeds").load("feeds.php", {limit: 25},
function (responseText, textStatus, XMLHttpRequest) {
// XMLHttpRequest.responseText has the error info you want.
alert(XMLHttpRequest.responseText);
});
Ответ 4
На электроинструментах есть статья под названием "Загрузка содержимого с помощью jQuery AJAX и устранение сбоев" , который, как представляется, отвечает на ваш вопрос.
Очевидно, что функция обратного вызова, которую вы указываете, получает объект ответа, статуса и XmlHttpRequest, что позволяет вам определить статус вашего запроса ajax и соответствующим образом обрабатывать условие.