XMLHttpRequest
XMLHttpRequest (XHR) ist ein Verfahren zum Übertragen von Daten über das HTTP-Protokoll.
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, muss ein Skript nicht warten, bis die Anfrage beantwortet ist, sondern kann sich solange anderen Aufgaben zuwenden.
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. XMLHttpRequest bildet einen Grundbaustein der Ajax-Technik.
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.
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 seit Januar 2012 den Status eines Arbeitsentwurfs (working draft).[6] Geplant sind Domänen-übergreifende Abfragen, die Unterstützung von Datenströmen usw.
Quellen
- ↑ Ajax Patterns – On-Demand Javascript
- ↑ Schnittstellenbeschreibung des XMLHttpRequest-Objekts für den IE
- ↑ Schnittstellenbeschreibung des XMLHttpRequest-Objekts für Mozilla
- ↑ Schnittstellenbeschreibung des XMLHttpRequest-Objekts für Safari
- ↑ Schnittstellenbeschreibung des XMLHttpRequest-Objekts vorgeschlagen durch das W3C
- ↑ XMLHttpRequest Level 2, W3C