JavaScript интерфейс XMLHttpRequest
Интерфейсы веб APIОписание интерфейса
Интерфейс XMLHttpRequest это интерфейс, который предоставляет функциональность для обмена данными между клиентом и сервером, он дает возможность получения данных по URL без необходимости полного обновления страницы. Интерфейс XMLHttpRequest широко используется в асинхронных запросах AJAX (от англ. Asynchronous Javascript and XML — "асинхронный JavaScript и XML"), что позволяет конкретной странице обновлять только её часть, не нарушая при этом работу пользователя. Кроме того, XMLHttpRequest имеет широкое использование при разработке одностраничных приложений (англ. single page application, SPA).
Несмотря на свое название, XMLHttpRequest можно использовать для получения любого типа данных, а не только XML, он поддерживает протоколы, отличные от HTTP (включая file и ftp).
Синтаксис
let request = new XMLHttpRequest();
При вызове конструтора возвращается новый объект XMLHttpRequest. Объект должен быть подготовлен по крайней мере вызовом метода open(), чтобы инициализировать его перед вызовом send() для отправки запроса на сервер.
Константы
Следующие константы объекта XMLHttpRequest определяют возможные значения свойства readyState:
Значение | Константа | Описание |
---|---|---|
0 | UNSENT | Объект XMLHttpRequest был создан, метод open() объекта не вызывался. |
1 | OPENED | Метод open() объекта был вызван. Во время этого состояния заголовки запросов могут быть установлены с помощью метода setRequestHeader() и метод send() может быть вызван, который инициирует отправку запроса. |
2 | HEADERS_RECEIVED | Метод send() объекта был вызван, заголовки и статус доступны. |
3 | LOADING | Происходит загрузка тела ответа сервера. Если значение свойства responseType соответствует значению "text" или пустой строке, то значение свойства responseText будет содержать частичные данные. |
4 | DONE | Операция завершена. Это может означать, что передача данных была завершена успешно или не удалась. |
Свойства интерфейса
Свойство | Описание | Chrome | Firefox | Opera | Safari | IExplorer | Edge |
---|---|---|---|---|---|---|---|
onreadystatechange | Содержит обработчик событий, вызываемый при запуске события readystatechange, то есть при каждом изменении свойства readyState объекта XMLHttpRequest. | Да | Да | Да | Да | Да | Да |
readyState | Возвращает состояние объекта XMLHttpRequest. | Да | Да | Да | Да | Да | Да |
response | Свойство возвращает содержимое тела ответа в виде ArrayBuffer, Blob, Document, объекта JavaScript или DOMString в зависимости от значения свойства responseType запроса. | Да | Да | Да | Да | 10.0 | Да |
responseText | Возвращает строковое значение, содержащее ответ на запрос в виде текста, или null, если запрос был неудачным или еще не был отправлен. | Да | Да | Да | 10.0 | Да | Да |
responseType | Возвращает перечисляемое строковое значение, указывающее тип данных, содержащихся в ответе. | 31.0 | 6.0 | 18.0 | 7.0 | 10.0 | Да |
responseURL | Возвращает сериализованный URL ответа или пустую строку, если URL равен null. | 37.0 | 32.0 | 24.0 | 8.0 | Нет | 14.0 |
responseXML | Возвращает документ (Document), содержащий HTML или XML, полученный запросом, или значение null, если запрос был неудачным, еще не был отправлен, или если данные не могут быть проанализированы как XML или HTML. | Да | Да | Да | Да | Да | Да |
status | Возвращает числовой код состояния HTTP ответа, полученный от сервера. | Да | Да | Да | Да | Да | Да |
statusText | Возвращает строковое значение, которое содержит строку ответа, возвращенную сервером HTTP. | Да | Да | Да | Да | Да | Да |
timeout | Соответствует количеству миллисекунд, которые может занять запрос перед автоматическим завершением (предельное время ожидания ответа в миллисекундах). | Да | Да | Да | Да | Да | Да |
upload | Свойство возвращает объект XMLHttpRequestUpload, который определяет набор свойств регистрации обработчиков событий для отслеживания процесса выгрузки тела HTTP запроса. | Да | Да | Да | 10.0 | Да | Да |
withCredentials | Соответствует логическому значению, которое определяет необходимость аутентификации при выполнении междоменного CORS запроса (Cross-origin resource sharing, с англ. "совместное использование ресурсов между разными источниками") и необходимость обработки заголовков cookie в CORS ответах. | Да | Да | Да | Да | Да | Да |
Методы интерфейса
Метод | Описание | Chrome | Firefox | Opera | Safari | IExplorer | Edge |
---|---|---|---|---|---|---|---|
abort() | Позволяет прервать запрос, если он уже был отправлен. | Да | Да | Да | Да | Да | Да |
getAllResponseHeaders() | Возвращает все заголовки ответа, разделенные разрывом строки (CRLF) в виде строки или null, если ответ не был получен. | Да | Да | Да | Да | Да | Да |
getResponseHeader() | Возвращает строку, содержащую текст указанного заголовка, или null, если ответ еще не был получен, или заголовок не существует в ответе. | Да | Да | Да | Да | Да | Да |
open() | Позволяет инициализировать только что созданный запрос, или повторно инициализировать существующий запрос. | Да | Да | Да | Да | Да | Да |
overrideMimeType() | Позволяет переопределить MIME тип, возвращаемый сервером (задает тип MIME, отличный от того, который предоставляется сервером для использования при интерпретации данных, передаваемых в запросе). | Да | Да | Да | Да | 11.0* | Да |
send() | Позволяет отправить запрос на сервер. | Да | Да | Да | Да | Да | Да |
setRequestHeader() | Задает значение заголовка HTTP запроса. | Да | Да | Да | Да | Да | Да |