Объект jqXHR

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

В предыдущем параграфе мы увидели, что в функции обратного вызова в методе может использоваться объект jqXHR. По сути с ним так или иначе связаны все методы jQuery, которые предназначены для отправки ajax-запросов.

Данный объект представляет собой обертку над стандартным объектом javascript XMLHttpRequest. Для совместимости с XMLHttpRequest jqXHR предлагает нам следующие свойства и методы:

  • readyState: возвращает состояние запроса. Имеет значения от 0 (запрос не отправлен) до 4 (запрос завершен)

  • status: возвращает код статуса HTTP, который получает от сервера

  • statusText: возвращает статус запроса в виде текста

  • responseXML: возвращает ответ в виде XML

  • responseText: возвращает ответ в виде простого текста

  • setRequestHeader(name, value): устанавливает заголовок запроса name со значением value. Если подобный заголовок уже имеется, то его значение заменяется на value

  • getAllResponseHeaders(): возвращает все заголовки ответа

  • getResponseHeader(name): возвращает заголовок ответа name

  • abort(): прерывает запрос

Но если для обработки ответа объект XMLHttpRequest предлагает нам обработать событие onreadystatechange, то для jqXHR определено сразу несколько методов, которые помогают обработать ответ:

  • done(function(data, textStatus, jqXHR)): обрабатывает успешный ответ с сервера

  • fail(function(jqXHR, textStatus, errorThrown)): обрабатывает ответ от сервера, запрос к которому закончился ошибкой

  • always(function(data|jqXHR, textStatus, jqXHR|errorThrown)): обрабатывает как успешные ответы с сервера, так и сообщения с ошибкой

  • then(function(data, textStatus, jqXHR), function(jqXHR, textStatus, errorThrown)): включает функциональность методов done и fail, принимая соответственно две функции обработки ответа

Итак, ранее мы использовали метод get следующим образом:

$.get('ajax.php', function(data) {
				$('#news').html(data);
				alert('Данные заружены');
		});

Но так как метод get возвращает объект jqXHR, то мы можем написать следующим образом, применив метод done:

$.get('ajax.php').done(function(data) {
				$('#news').html(data);
				alert('Данные заружены');
		});

Подобным образом мы можем применить и другие методы:

var jqxhr=$.get('ajax.php');
jqxhr.done(function(data) {
		$('#result').html(data);
});
jqxhr.fail(function(data) {
		$('#result').html("ОШИБКА!");
});
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850