XMLHttpRequest

XMLHttpRequest (kurz: XHR) ist eine Programmierschnittstelle für JavaScript zum Übertragen von Daten über HTTP. Entgegen dem Namen muss es sich bei diesen Daten nicht um XML handeln. XMLHttpRequest bildet einen Grundbaustein der Ajax-Technik.

XMLHttpRequest ermöglicht es einem Skript einer Webseite, Daten dynamisch vom Webserver abzurufen, ohne dass dazu die HTML-Seite neu geladen werden müsste. Dies war zuvor nur durch den Einsatz unsichtbarer HTML-Frames oder IFrames oder mit dynamisch nachgeladenen Skript-Dateien[1] möglich. Da beim XMLHttpRequest-Verfahren Daten asynchron verarbeitet werden können, muss ein Skript nicht warten, bis die Anfrage beantwortet ist, sondern kann sich so lange anderen Aufgaben zuwenden.

Die Schnittstellenbeschreibung des XMLHTTPRequest-Objekts gemäß dem Standardisierungsvorschlag des W3C.

Es können HTTP-Verfahren wie Anfragemethoden, Authentifizierung und Caching verwendet werden. Wenn eine Anfrage XML-Daten liefert, kann XMLHttpRequest diese alternativ als Text oder als DOM-Baumstruktur zurücksenden. Letzteres eignet sich beispielsweise dazu, mit Webservices zu kommunizieren.

Geschichte

Die XMLHttpRequest-Technik wurde ursprünglich von Microsoft entwickelt und stand im Internet Explorer ab Version 5.0 als ActiveX-Objekt zur Verfügung. Viele Browser unterstützen diese API, neben dem Internet Explorer[2] (ab Version 7 als XMLHttpRequest) sind das Mozilla und alle anderen Gecko-Derivate (ab Version 1.0),[3] Opera (ab Version 7.6 Beta) und Apple Safari (ab Version 1.2),[4] Konqueror und alle anderen KHTML-Derivate.

Wie aus den einzelnen Schnittstellenbeschreibungen der verschiedenen XMLHttpRequest-Implementierungen hervorgeht, sind diese nicht vollständig zueinander kompatibel. Aus diesem Grund wurde im Dezember 2012 eine einheitliche Definition für das XMLHttpRequest-Objekt durch das W3C zur Standardisierung vorgeschlagen.[5]

Seit Ende 2012 wird die Spezifikation als fortlaufend weiterentwickelter Living Standard von der WHATWG geführt.[6]

Codebeispiele (JavaScript)

Das folgende Beispiel ruft eine Ressource auf derselben Domain über XMLHttpRequest auf und gibt den Inhalt in einem Meldungsfenster aus. Wenn der Aufruf der Ressource fehlschlägt, wird keine Meldung ausgegeben:

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 Level 2

XMLHttpRequest Level 2 war ein Arbeitsentwurfs (working draft) beim W3C für eine Erweiterung der Spezifikation um u. a. domain-übergreifende Abfragen und die Unterstützung von Datenströmen. Diese Erweiterungen sind seit 2012 in den Standard aufgenommen worden.[7][6]

Einzelnachweise

  1. Ajax Patterns – On-Demand Javascript (Memento vom 22. April 2011 im Internet Archive)
  2. Schnittstellenbeschreibung des XMLHttpRequest-Objekts für den IE
  3. Schnittstellenbeschreibung des XMLHttpRequest-Objekts für Mozilla
  4. Schnittstellenbeschreibung des XMLHttpRequest-Objekts für Safari
  5. Schnittstellenbeschreibung des XMLHttpRequest-Objekts vorgeschlagen durch das W3C
  6. a b XMLHttpRequest Standard. Abgerufen am 22. Februar 2023.
  7. XMLHttpRequest Level 2, W3C

Auf dieser Seite verwendete Medien

W3C Icon.svg
This is the official (World Wide Web Consortium) Icon.
XMLHTTPRequest-Object.PNG
Autor/Urheber:

Daniel S. Haischt

, Lizenz: PD-Schöpfungshöhe

Schnittstellenbeschreibung des XMLHTTPRequest-Objekts gemäß dem W3C-Vorschlag