XMLHttpRequest

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

XMLHttpRequest (XHR) ist eine Programmierschnittstelle für JavaScript zum Übertragen von Daten über das HTTP-Protokoll. 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 solange anderen Aufgaben zuwenden.

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

Mit XMLHttpRequest können sämtliche HTTP-Anfragemethoden (unter anderem GET, POST, HEAD, PUT) 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[Bearbeiten]

Die XMLHttpRequest-Technik wurde ursprünglich von Microsoft entwickelt und steht im Internet Explorer seit Version 5.0 als ActiveX-Objekt zur Verfügung. Viele Browser unterstützen diese API, neben dem Internet Explorer[2] sind das Mozilla und alle anderen Gecko-Derivate (ab Version 1.0),[3] Opera (ab Version 7.6 Beta) und 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]

Codebeispiele (JavaScript)[Bearbeiten]

Das folgende Beispiel ruft eine Ressource auf derselben Domain über XMLHttpRequest auf und gibt den Inhalt in einem Meldungsfenster aus. Sollte eine Aktion fehlschlagen, weil der Browser die Methode nicht unterstützt, stürzt das Programm nicht ab, sondern probiert eine ältere IE-Version. Wenn alles nicht wirkt, passiert überhaupt nichts:

var xmlHttp = null;
try {
    // Mozilla, Opera, Safari sowie Internet Explorer (ab v7)
    xmlHttp = new XMLHttpRequest();
} catch(e) {
    try {
        // MS Internet Explorer (ab v6)
        xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(e) {
        try {
            // MS Internet Explorer (ab v5)
            xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            xmlHttp  = null;
        }
    }
}
if (xmlHttp) {
    xmlHttp.open('GET', 'beispiel.xml', true);
    xmlHttp.onreadystatechange = function () {
        if (xmlHttp.readyState == 4) {
            alert(xmlHttp.responseText);
        }
    };
    xmlHttp.send(null);
}

XMLHttpRequest Level 2[Bearbeiten]

Eine erweiterte Spezifikation von XMLHttpRequest hat beim W3C seit Januar 2012 den Status eines Arbeitsentwurfs (working draft).[6] Geplant sind Domänen-übergreifende Abfragen, die Unterstützung von Datenströmen usw.

Einzelnachweise[Bearbeiten]

  1. Ajax Patterns – On-Demand Javascript
  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. XMLHttpRequest Level 2, W3C