.ajaxComplete()


.ajaxComplete( handler )Возвращает: jQuery

Описание: Регистрирует обработчик, который вызывается при завершения каждого Ajax запроса. Является Ajax событием.

Всякий раз при завершении Ajax запроса, jQuery инициирует ajaxComplete событие. Все обработчики зарегистрированные при помощи метода .ajaxComplete() будут выполнены в этот момент.

Для наблюдения этого метода в действии, установим обработчик и вызовем Ajax load запрос:

1
2
3
<div class="trigger">Trigger</div>
<div class="result"></div>
<div class="log"></div>

Добавляем обработчик события к document:

1
2
3
$( document ).ajaxComplete(function() {
$( ".log" ).text( "Triggered ajaxComplete handler." );
});

Теперь, выполняем Ajax запрос при помощи одного из методов jQuery:

1
2
3
$( ".trigger" ).click(function() {
$( ".result" ).load( "ajax/test.html" );
});

Когда пользователь кликает по элементу с классом trigger и после выполнения Ajax запроса, будет показано сообщение внутри элемента div с классом log.

Все обработчики ajaxComplete будут выполнены, независимо от того как Ajax запрос был завершен. Если Вам нужно различать запросы между собой, то используйте параметры передаваемые в функцию обработчик. Каждый раз когда обработчик ajaxComplete выполняется, ему передается объект события (event), объект XMLHttpRequest (jqXHR) и объект настроек (ajaxSettings) используемый для создания запроса. Например, Вы можете ограничить функцию обратного вызова при обработке события связанного с конкретным URL:

1
2
3
4
5
6
$( document ).ajaxComplete(function( event, xhr, settings ) {
if ( settings.url === "ajax/test.html" ) {
$( ".log" ).text( "Triggered ajaxComplete handler. The result is " +
xhr.responseText );
}
});

Заметка: Вы можете взять ответ Ajax запроса обратившись к xhr.responseText.

Примечания:

  • Начиная с версии jQuery 1.9, все обработчики для глобальных Ajax событий, включая добавленные методом .ajaxComplete(), должны быть прикреплены к to document.
  • Если $.ajax() или $.ajaxSetup() вызваны с параметром global равным false, то обработчики .ajaxComplete() не будут вызваны.

Пример:

Показываем сообщение когда Ajax запрос завершен.

1
2
3
$( document ).ajaxComplete(function( event,request, settings ) {
$( "#msg" ).append( "<li>Request Complete.</li>" );
});