XMLHttpRequest

XMLHttpRequest (сокращенно XHR ) - это программный интерфейс для JavaScript для передачи данных через HTTP . Вопреки названию, эти данные не обязательно должны быть в формате XML. XMLHttpRequest образует базовый компонент технологии Ajax .

XMLHttpRequest позволяет сценарию веб-сайта динамически получать данные с веб-сервера без необходимости перезагружать HTML-страницу. Раньше это было возможно только за счет использования невидимых фреймов HTML или IF-фреймов или с помощью динамически загружаемых файлов сценариев. Поскольку данные могут обрабатываться асинхронно с помощью процедуры XMLHttpRequest , сценарию не нужно ждать ответа на запрос, а вместо этого можно сосредоточиться на других задачах.

Image
Описание интерфейса объекта XMLHTTPRequest в соответствии с предложением W3C по стандартизации .

С 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 года . Планируются междоменные запросы, поддержка потоков данных и т. Д.

Индивидуальные доказательства

  1. Ajax Patterns - Javascript по запросу ( памятка от 22 апреля 2011 г. в Интернет-архиве )
  2. Описание интерфейса объекта XMLHttpRequest для IE
  3. Описание интерфейса объекта XMLHttpRequest для Mozilla
  4. Описание интерфейса объекта XMLHttpRequest для Safari
  5. Описание интерфейса объекта XMLHttpRequest, предложенного W3C
  6. XMLHttpRequest, уровень 2, W3C