Обработка ошибок Ajax с jQuery: если я использую $ .ajaxSetup () или $ .fn.ajaxError ()

Я хочу предупредить пользователя каждый раз, когда существует ошибка Ajax. Можно сделать это через $.ajaxSetup:

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

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

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

Таким образом, я предполагаю, что я, как предполагается, делаю это:

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

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

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

12
задан Sumurai8 26 June 2015 в 17:24
поделиться

3 ответа

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

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

7
ответ дан 2 December 2019 в 22:37
поделиться

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

$('body').ajaxError(function() {
    alert("OOPS!")
});
0
ответ дан 2 December 2019 в 22:37
поделиться

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


0
ответ дан 2 December 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: