Выбрать главу

3. Вызывается метод setRequestHeader(), если необходимо указать дополнительные параметры запроса.

4. Вызовом метода send() выполняется отправка запроса веб-серверу. Если был выбран метод отправки POST, этому методу можно дополнительно передать тело запроса. В процессе выполнения запроса будет вызываться функция-обработчик события onreadystatechange. Когда свойство readyState получит значение 4, выполнение запроса завершится.

5. После того как свойство readyState достигнет значения 4, можно проверить код состояния в свойстве status, чтобы убедиться, что запрос завершился успехом. В этом случае методом getResponseHeader() или getResponseHeaders() следует извлечь значения из заголовка ответа и с помощью свойства responseText или responseXML получить тело ответа.

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

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

Конструктор

new XMLHttpRequest()

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

Константы

unsigned short UNSENT = 0

Начальное состояние. Объект XMLHttpRequest только что создан или сброшен в исходное состояние вызовом метода abort().

unsigned short OPENED = 1

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

unsigned short HEADERS.RECEIVED = 2

Вызван метод send() и приняты заголовки ответа, но тело ответа еще не принято.

unsigned short LOADING = З

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

unsigned short DONE = 4

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

Свойства

readonly unsigned short readyState

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

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

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

readonly any response

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

readonly string responseText

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