Я хочу предупредить пользователя каждый раз, когда существует ошибка 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 рекомендуют использовать то, что похоже на менее читаемый подход, и какой подход является лучшим?
Типичное использование состоит в том, что конкретный элемент страницы, к которому вы привязываете ajaxError, является div, в котором будет отображаться ваше сообщение об ошибке; возможно, div-сообщение "flash" вверху вашей страницы. Таким образом, у вас будет прямой доступ к этому div для добавления вашего сообщения.
Но если вы не используете конкретный элемент DOM в качестве области отображения сообщения, вы, безусловно, можете привязать его к $ (document)
или другому подобному глобальному элементу.
Вы можете подключить функцию ошибки ко всему телу следующим образом:
$('body').ajaxError(function() {
alert("OOPS!")
});
Могут быть обстоятельства, когда ошибка может относиться к отдельному элементу управления - например, когда у вас есть автозаполнение, которое обращается к базе данных через ajax, в отличие от всей страницы, как при отправке. Это позволит определить, нужно ли изолировать ошибку на компоненте страницы, и если да, то каким должен быть ответ на ошибку, а не более общий подход.