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,
  /* ... */
});