JavaScript. Подробное руководство, 6-е издание, стр. 533

Объект

<b>XMLHttpRequest</b>
определяет относительно высокоуровневый прикладной интерфейс к протоколу HTTP. Он учитывает такие особенности, как обработка переадресации, управление cookies и обслуживание меж доменных запросов с заголовками CORS.

Возможности объекта

<b>XMLHttpRequest</b>
, описанные выше, прекрасно поддерживаются всеми современными броузерами. На момент написания этих строк велись работы над стандартом «XMLHttpRequest Level 2», и производители броузеров уже приступили к его реализации. Свойства, методы и обработчики событий, перечисленные ниже, включают особенности, введенные спецификацией «XMLHttpRequest Level 2», которые могут быть реализованы не во всех броузерах. Эти новые особенности помечены строкой «XHR2».

Конструктор

<b>new XMLHttpRequest()</b>

Этот конструктор, не имеющий аргументов, возвращает новый объект

<b>XMLHttpRequest</b>
.

Константы

unsigned short UNSENT = 0

Начальное состояние. Объект

<b>XMLHttpRequest</b>
только что создан или сброшен в исходное состояние вызовом метода
<b>abort()</b>
.

unsigned short OPENED = 1

Метод

<b>open()</b>
уже вызван, но обращения к методу
<b>send()</b>
еще не было. Запрос еще не отправлен.

unsigned short HEADERS.RECEIVED = 2

Вызван метод

<b>send()</b>
и приняты заголовки ответа, но тело ответа еще не принято.

unsigned short LOADING = З

Начат прием тела ответа, но прием еще не завершился.

unsigned short DONE = 4

HTTP-ответ принят полностью или прием был остановлен из-за ошибки.

Свойства

<b>readonly unsigned short readyState</b>

Состояние HTTP-запроса. В момент создания объекта

<b>XMLHttpRequest</b>
это свойство приобретает значение 0, а к моменту получения полного HTTP-ответа это значение возрастает до 4. Возможные значения свойства определяют константы, перечисленные выше.

Значение свойства

<b>readyState</b>
может уменьшаться, только если в процессе выполнения запроса был вызван метод
<b>abort()</b>
или
<b>ореп().</b>

Теоретически при каждом изменении значения этого свойства должен вызываться обработчик события

<b>onreadystatechange</b>
. Однако на практике событие гарантированно возникает, только когда свойство
<b>readyState</b>
получает значение 4. (События «progress», введенные спецификацией XHR2, обеспечивают более надежный способ слежения за ходом выполнения запроса.)

<b>readonly any response</b>

В спецификации XHR2 это свойство хранит ответ сервера. Тип свойства зависит от значения свойства

<b>responseType</b>
. Если
<b>responseType</b>
содержит пустую строку или строку «text», данное свойство содержит тело ответа в виде строки. Если
<b>responseType</b>
содержит строку «document», значением данного свойства будет объект
<b>Document</b>
, полученный в результате разбора XML- или HTML-документа в теле ответа. Если
<b>responseType</b>
содержит строку «arraybuffer», значением данного свойства будет объект
<b>ArrayBuffer</b>
, представляющий двоичные данные в теле ответа. А если
<b>responseType</b>
содержит строку «ЫоЬ», значением данного свойства будет объект
<b>Blob</b>
, представляющий двоичные данные в теле ответа.

<b>readonly string responseText</b>

Если значение свойства

<b>readyState</b>
меньше 3, данное свойство будет содержать пустую строку. Если значение свойства
<b>readyState</b>
равно 3, данное свойство возвращает часть ответа, которая была принята к текущему моменту. Если значение свойства
<b>readyState</b>
равно 4, это свойство содержит полное тело ответа.

Если в ответе имеется заголовок, определяющий кодировку символов в теле ответа, используется эта кодировка, в противном случае предполагается кодировка UTF-8.

<b>string responseType</b>

В спецификации ХHR2 это свойство определяет тип ответа и тип свойства

<b>response</b>
. Допустимыми значениями являются «text», «document», «arraybuffer» и «blob».

Значением по умолчанию является пустая строка, которая также является синонимом значения «text». Если установить это свойство вручную, последующие попытки обратиться к свойствам

<b>responseText</b>
и
<b>responseXML</b>
будут возбуждать исключения и для получения ответа сервера необходимо будет использовать свойство
<b>response</b>
, предусмотренное спецификацией XHR2.

<b>readonly Document responseXML</b>

Ответ на запрос, который интерпретируется как XML- или HTML-документ и возвращается в виде объекта

<b>Document</b>
. Это свойство будет иметь значение null, если тело ответа еще не получено или оно не является допустимым XML или HTML-документом.

<b>readonly unsigned short status</b>

HTTP-код состояния, полученный от сервера, такой как 200 - в случае успеха, 404 - в случае ошибки отсутствия документа или 0 - если сервер еще не прислал код состояния.

<b>readonly string statusText</b>

Это свойство содержит текст, соответствующий HTTP-коду состояния в ответе. То есть, когда свойство

<b>status</b>
имеет значение 200, это свойство содержит строку «ОК», а когда 404 - строку «Not Found». Это свойство содержит пустую строку, если сервер еще не прислал код состояния.

<b>unsigned long timeout</b>

Свойство, введенное спецификацией XHR2, определяющее предельное время ожидания ответа в миллисекундах. Если выполнение HTTP-запроса займет больше времени, чем указано в данном свойстве, он будет прерван и будет сгенерировано событие «timeout». Это свойство можно установить только после вызова метода

<b>open() </b>
и перед вызовом метода
<b>send().</b>