Глобальные события ajax

Последнее обновление: 1.11.2015

В предыдущих параграфах мы посмотрели, как использовать функции обратного вызова для обработки ответа с сервера. Но кроме локальных функций, мы можем использовать также обрабатывать глобальные события AJAX. Для обработки данных глобальных событий в jQuery предоставляет следующие методы:

  • ajaxComplete: регистрирует обработчик завершения запроса AJAX

  • ajaxError: регистрирует обработчик, который будет вызываться, если запрос завершился с ошибкой

  • ajaxSend: регистрирует функцию, которая будет срабатывать перед отправкой запроса

  • ajaxStart: регистрирует обработчик, который запускается при запросе ajax

  • ajaxStop: регистрирует обработчик, который запускается при завершении запросов ajax

  • ajaxSuccess: регистрирует функцию, которая запускается при успешном завершении запроса

Все методы принимают в качестве параметра функцию обработчика. В свою очередь данная функция во всех методах, кроме ajaxStart и ajaxStop может принимать три параметра:

  • объект Event, содержащий данные о событии

  • объект jqXHR, связанный с данным ajax-запросом

  • дополнительные параметры

Для управления глобальными событиями предназначена опция global в методе ajax. По умолчанию она имеет значение true, то есть глобальные события будут генерироваться, и мы их сможем обработать. Если же этот параметр равен false, то события не будут генерироваться.

Начиная с версии jquery 1.8 глобальные события следует прикреплять к объекту document:

$(function(){
	$(document).ajaxStart(function() {
		$("#log").append("<p>Сработало событие ajaxStart</p>" );
	});
	$('button').click(function() {
		$("#result").load('ajax.php');
	});
});

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

Подобным образом мы можем использовать остальные методы:

$(document)
	.ajaxStart(function() {
		$("#log").append("<p>Начало запроса</p>" );
	})
	.ajaxSend(function(event, jqxhr, settings) {
		$("#log").append("<p>Запрос отправлен по адресу: "+settings.url+"</p>" );
	})
	.ajaxStop(function() {
		$("#log").append("<p>Все запросы завершены</p>" );
	})
	.ajaxError(function(event, jqxhr, settings) {
		$("#log").append("<p>Ошибка при выполнении запроса</p>" );
	})
	.ajaxComplete(function(event, jqxhr, settings) {
		$("#log").append("<p>Запрос завершен</p>" );
	})
	.ajaxSuccess(function(event, jqxhr, settings) {
		$("#log").append("<p>С сервера получены данные: "+jqxhr.responseText+"</p>" );
	});
	$('button').click(function() {
		$("#result").load('ajax.php');
	});
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850