Обработка ошибок AJAX с помощью jQuery: следует ли использовать $ .ajaxSetup () или $ .fn.ajaxError () - PullRequest
12 голосов
/ 27 июля 2010

Я хочу предупредить пользователя при возникновении ошибки AJAX. Вы можете сделать это через $.ajaxSetup:

$.ajaxSetup({ 
  error: function() {
    alert("OOPS!")
  }
});

Но документы JQuery рекомендуют против этого :

Примечание: глобальные функции обратного вызова должны быть установлен с их соответствующими глобальными Ajax обработчик событий методы-.ajaxStart (), .ajaxStop (), .ajaxComplete (), .ajaxError (), .ajaxSuccess (), .ajaxSend () - скорее чем в объекте настроек для $ .AjaxSetup ().

Так что, я думаю, я должен сделать это:

$("#some_random_div").ajaxError(function() {
  alert("OOPS!")
});

Это не имеет смысла для меня: обратный вызов ошибки AJAX относится ко всему моему приложению, а не к конкретному элементу страницы. Так почему же функция обратного вызова должна быть связана с отдельным элементом страницы?

Итак: почему в документах jQuery рекомендуется использовать подход, который выглядит менее читабельным, и какой подход лучше?

Ответы [ 4 ]

7 голосов
/ 27 июля 2010

Типичное использование заключается в том, что конкретный элемент страницы, с которым вы связываете ajaxError, - это div, в котором будет отображаться ваше сообщение об ошибке;возможно, «всплывающее» сообщение div в верхней части вашей страницы.Таким образом, у вас есть прямой доступ к этому элементу div для добавления вашего сообщения.

Но если вы не используете определенный элемент DOM в качестве области отображения сообщений, вы, безусловно, можете связать его с $(document) или каким-либо другимглобальный элемент.

2 голосов
/ 19 августа 2013

Состояние документов:

Начиная с jQuery 1.8, метод .ajaxError () должен быть прикреплен только к документу .

http://api.jquery.com/ajaxError/

0 голосов
/ 28 июля 2010

Могут существовать обстоятельства, когда он может относиться к отдельному элементу управления, например, когда у вас есть автозаполнение, которое выполняет циклические переходы в базу данных через ajax, в отличие от целой страницы, как при отправке. После этого будет определено, хотите ли вы изолировать ошибку на компоненте страницы и, если да, каким должен быть ответ на ошибку, а не с более общим подходом.


0 голосов
/ 27 июля 2010

Вы можете подключить функцию ошибки ко всему телу следующим образом:

$('body').ajaxError(function() {
    alert("OOPS!")
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...