Как отловить ошибку в методе load () jQuery - PullRequest
49 голосов
/ 15 апреля 2009

Я использую метод jQuery .load() для извлечения некоторых данных, когда пользователь нажимает кнопку.

После успешного завершения загрузки я показываю результат в <div>.

Проблема в том, что иногда возникает ошибка в load() при получении данных.

Как я могу поймать ошибку в load()?

Ответы [ 4 ]

75 голосов
/ 15 апреля 2009

load () документация.

Просто небольшой фон о том, как происходит ошибка загрузки ...

$("body").load("/someotherpath/feedsx.pxhp", {limit: 25}, 
    function (responseText, textStatus, req) {
        if (textStatus == "error") {
          return "oh noes!!!!";
        }
});

Редактировать: добавлен путь, отличный от корневого, в соответствии с запросом комментариев.

11 голосов
/ 15 апреля 2009

Помимо передачи обратного вызова в функцию load (), как предлагает Ólafur Waage, вы также можете зарегистрировать «глобальные» обработчики ошибок (глобальные, как глобальные для всех вызовов ajax на странице).

Существует как минимум два способа регистрации глобальных обработчиков ошибок Ajax:

Зарегистрируйте только обработчик ошибок с помощью ajaxError():

$.ajaxError(function(event, request, settings) {
      alert("Oops!!");
});

Или используйте ajaxSetup() для одновременной настройки обработчика ошибок и других свойств:

$.ajaxSetup({
    timeout: 5000,
    error: function(event, request, settings){
        alert("Oops!");
    }
});
5 голосов
/ 15 апреля 2009

load () предлагает обратный вызов.

Обратный вызов.
Функция вызывается, когда запрос ajax завершен (не обязательно успешный).

Вот как это сделал IIRC. (еще не проверял)

$("#feeds").load("feeds.php", {limit: 25}, 
    function (responseText, textStatus, XMLHttpRequest) {
        // XMLHttpRequest.responseText has the error info you want.
        alert(XMLHttpRequest.responseText);
});
0 голосов
/ 15 апреля 2009

В наборе инструментов Electric есть статья под названием "Загрузка контента с помощью jQuery AJAX и устранение сбоев" , которая, кажется, отвечает на ваш вопрос.

Очевидно, что указанная вами функция обратного вызова получает объект response, status и объект XmlHttpRequest, что позволяет вам определять состояние вашего запроса ajax и соответствующим образом обрабатывать условие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...