jqXHR-объект
jQuery XMLHttpRequest (jqXHR) появился в библиотеке jQuery в версии 1.5 и является расширенным вариантом объекта XMLHttpRequest. Например, он всегда будет содержать поля responseText и responseXML, а так же метод getResponseHeader(). Если запрос не предполагает использование нативного XMLHttpRequest (например в случае кроссдоменного запроса скрипта), jQuery создает jqXHR с нуля, и заполняет его насколько это возможно.
jqXHR-объекты возвращаемые методом jQuery.ajax() реализуют интерфейс Promise, предоставляя им все свойства, методы и поведение Promise. Эти методы принимают одну или несколько функций в качестве аргументов, вызываемые методом jQuery.ajax(), когда запрос завершается. Такой подход позволяет назначить несколько обработчиков на один AJAX-запрос и даже после отправки запроса. (Если запрос завершен, обработчик будет исключен.)
Доступны следующие методы интерфейса Promise в jqXHR-объекте:
- jqXHR.done()
- jqXHR.fail()
- jqXHR.always()
- jqXHR.then()
Метод jqXHR.done()
jqXHR.done(function(data, textStatus, jqXHR) {});
Метод jqXHR.done() является альтернативой обработчика успешного завершения AJAX-запроса. Заменяет устаревший метод jqXHR.success().
Метод jqXHR.fail()
jqXHR.fail(function(jqXHR, textStatus, errorThrown) {});
Метод jqXHR.fail() являтся альтернативой обработчика ошибки при AJAX-запросе. Заменяет устаревший метод jqXHR.error().
Метод jqXHR.always()
jqXHR.always(function(data|jqXHR, textStatus, jqXHR|errorThrown) { });
Метод jqXHR.always() являтся альтернативой обработчика заврешения AJAX-запроса. Заменяет устаревший метод jqXHR.complete().
Обратите внимание, что при успешном запросе, аргументы метода jqXHR.always() такие же, как у метода jqXHR.done(), а при AJAX-запросе с ошибкой такие же как у метода jqXHR.fail()
Метод jqXHR.then()
Метод jqXHR.then() включает в себя функциональность методов jqXHR.done() и jqXHR.fail().