XMLHttpRequest
XMLHttpRequest (сокращенно XHR ) - это программный интерфейс для JavaScript для передачи данных через HTTP . Вопреки названию, эти данные не обязательно должны быть в формате XML. XMLHttpRequest образует базовый компонент технологии Ajax .
XMLHttpRequest позволяет сценарию веб-сайта динамически получать данные с веб-сервера без необходимости перезагружать HTML-страницу. Раньше это было возможно только за счет использования невидимых фреймов HTML или IF-фреймов или с помощью динамически загружаемых файлов сценариев. Поскольку данные могут обрабатываться асинхронно с помощью процедуры XMLHttpRequest , сценарию не нужно ждать ответа на запрос, а вместо этого можно сосредоточиться на других задачах.
С XMLHttpRequest можно использовать все методы HTTP-запроса (включая GET, POST, HEAD, PUT). Если запрос доставляет данные XML , XMLHttpRequest может отправить их обратно либо в виде текста, либо в виде древовидной структуры DOM . Последний подходит, например, для общения с веб-сервисами .
история
Технология XMLHttpRequest была первоначально разработана Microsoft и доступна в Internet Explorer с версии 5.0 как объект ActiveX . Многие браузеры поддерживают этот API, рядом с Internet Explorer (версии 7 как XMLHttpRequest ) является Mozilla и все другие Gecko - производные (версия 1.0), Opera (версия 7.6 Beta) и Apple Safari (версия 1.2), Konqueror и все другие KHTML производные.
Как видно из отдельных описаний интерфейсов различных реализаций XMLHttpRequest, они не полностью совместимы друг с другом. По этой причине W3C для стандартизации в декабре 2012 года предложил единообразное определение объекта XMLHttpRequest .
Примеры кода (JavaScript)
В следующем примере вызывается ресурс в том же домене через XMLHttpRequest и выводится содержимое в окне сообщения. В случае сбоя вызова ресурса сообщение не выдается:
var xmlHttp = null;
try {
xmlHttp = new XMLHttpRequest();
} catch(e) {
// Fehlerbehandlung, wenn die Schnittstelle vom Browser nicht unterstützt wird.
}
if (xmlHttp) {
xmlHttp.open('GET', 'beispiel.xml', true);
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
alert(xmlHttp.responseText);
}
};
xmlHttp.send(null);
}
XMLHttpRequest, уровень 2
Расширенная спецификация XMLHttpRequest имеет статус рабочего проекта в W3C с января 2012 года . Планируются междоменные запросы, поддержка потоков данных и т. Д.
Индивидуальные доказательства
- ↑ Ajax Patterns - Javascript по запросу ( памятка от 22 апреля 2011 г. в Интернет-архиве )
- ↑ Описание интерфейса объекта XMLHttpRequest для IE
- ↑ Описание интерфейса объекта XMLHttpRequest для Mozilla
- ↑ Описание интерфейса объекта XMLHttpRequest для Safari
- ↑ Описание интерфейса объекта XMLHttpRequest, предложенного W3C
- ↑ XMLHttpRequest, уровень 2, W3C