Ajax-события
Ajax-запросы порождают несколько событий, которые можно обработать при необходимости. Эти события делятся на два вида: локальные и глобальные. Ниже приведён перечень всех ajax-событий в порядке их срабатывания. События ajaxStart
и ajaxStop
рассматриваются по отношению ко всем запросам одновременно. Остальные события возникают для каждого события отдельно.
ajaxStart
- Глобальное событие. Событие возникает перед отправкой запроса, если в данный момент нет других выполняющихся запросов.
beforeSend
- Локальное событие. Наступает перед отправкой запроса. Позволяет вносить изменения в XMLHttpRequest-объект.
ajaxSend
- Глобальное событие. Наступает перед отправкой запроса.
success
- Локальное событие. Наступает при успешном выполнении запроса (нет ошибок с сервера, нет ошибок с полученными данными).
ajaxSuccess
- Глобальное событие. Наступает при успешном выполнении запроса.
error
- Локальное событие. Наступает при завершении запроса с ошибкой. В этом случае событие
success
не наступит. ajaxError
- Глобальное событие. Наступает при завершении запроса с ошибкой.
complete
- Локальное событие. Наступает после завершения запроса, независимо от его результата (успешно или с ошибкой).
ajaxComplete
- Глобальное событие. Наступает после завершения запроса.
ajaxStop
- Глобальное событие. Событие возникает после завершения запроса, если в данный момент нет других выполняющихся запросов.
Локальные события
К локальным относятся события, обработчики которых устанавливаются индивидуально для каждого запроса при его вызове. Пример:
$.ajax({ beforeSend: function() { /* Обработка события beforeSend */ }, complete: function() { /* Обработка события complete */ } /* ..... */ });
Всего существует 4 локальных события: beforeSend
, success
, error
и complete
. Способы обработки этих событий приводятся в описании функции jQuery.ajax().
Глобальные события
К глобальным относятся события, обработчики которых устанавливаются на объект document
. Данные обработчики являются общими для всех ajax-запросов и могут быть запущены любым из них. Глобальные события: ajaxStart
, ajaxSend
, ajaxSuccess
, ajaxError
, ajaxComplete
и ajaxStop
.
Обработчики глобальных событий можно установить с помощью метода on()
:
$(document).on({ 'ajaxSend': function() { /* Обработка события ajaxSend */ }, 'ajaxComplete': function() { /* Обработка события ajaxComplete */ } });
Кроме того, для установки обработчиков глобальных событий можно использовать индивидуальные методы:
ajaxStart()
- Устанавливает обработчик события
ajaxStart
. ajaxSend()
- Устанавливает обработчик события
ajaxSend
. ajaxSuccess()
- Устанавливает обработчик события
ajaxSuccess
. ajaxError()
- Устанавливает обработчик события
ajaxError
. ajaxComplete()
- Устанавливает обработчик события
ajaxComplete
. ajaxStop()
- Устанавливает обработчик события
ajaxStop
.
Срабатывание глобальных событий можно отменить, присвоив параметру global
значение false
:
$.ajax({ global: false, /* ... */ });