Zum Inhalt springen

XMLHttpRequest

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 17. Juni 2012 um 01:59 Uhr durch JackieBot (Diskussion | Beiträge) (r2.7.2) (Bot: Ergänze: fa:XMLHttpRequest). Sie kann sich erheblich von der aktuellen Version unterscheiden.

XMLHttpRequest (XHR) ist eine API zum Transfer von beliebigen Daten über das Protokoll HTTP. Dabei 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 Plaintext oder als DOM-Baumstruktur zurücksenden. Letzteres eignet sich beispielsweise dazu, mit Web Services zu kommunizieren. XMLHttpRequest kann aus JavaScript, JScript und VBScript heraus verwendet werden und bildet einen Grundbestandteil der Ajax-Technik.

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

XMLHttpRequest ermöglicht einem Skript einer Webseite, Daten dynamisch vom Webserver abzurufen, ohne dass dazu die Seite neu geladen werden müsste. Dies war zuvor nur durch den Einsatz unsichtbarer Frames/IFrames oder mit On-Demand JavaScript[1] möglich. Da XMLHttpRequest Anfragen asynchron verarbeiten kann, muss ein Skript nicht warten, bis die Anfrage beantwortet ist, sondern kann solange andere Aufgaben abarbeiten.

Geschichte

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.

Trotz der guten Verfügbarkeit der API in neueren Browsern wird an ihr auch Kritik geübt, da es schwierig ist, Webseiten, die XMLHttpRequest einsetzen, auch älteren Browsern in vollem Umfang zugänglich zu machen. Dies erklärt auch, warum XMLHttpRequest erst in neuerer Zeit vermehrt zum Einsatz kommt. Ein weiterer Kritikpunkt ist, dass sich Web-Anwendungen, die auf XMLHttpRequest setzen, nur schwer barrierefrei umsetzen lassen.

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

Codebeispiele (JavaScript)

Das folgende Beispiel ruft eine Ressource auf derselben Domain über XMLHttpRequest auf und gibt den Inhalt in einem Meldungsfenster aus:

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

Eine erweiterte Spezifikation von XMLHttpRequest hat beim W3C momentan (Stand Januar 2012) den Status eines Arbeitsentwurfs (Working Draft).[6] Geplant sind Domain-übergreifende Abfragen, die Unterstützung von Datenströmen u.a.

Quellen

  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