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 die HTML-Seite neu zu laden. Dies war zuvor nur durch den Einsatz unsichtbarer HTML-Frames oder IFrames oder mit dynamisch nachgeladenen Skript-Dateien möglich.[1]
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.
Verwendet werden können HTTP-Verfahren wie Anfragemethoden, Authentifizierung und Caching. Wenn eine Anfrage XML-Daten liefert, kann XMLHttpRequest diese als Text oder als DOM-Baumstruktur zurücksenden; letzteres eignet sich z. B. für die Kommunikation mit Webservices.
Mit der Einführung von Web Workers wurde XHR durch die Fetch API abgelöst.[2][3]
Geschichte
[Bearbeiten | Quelltext bearbeiten]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 Webbrowser unterstützen diese API, nämlich neben dem Internet Explorer[4] (ab Version 7 als XMLHttpRequest):
- Mozilla und alle anderen Gecko-Derivate (ab Version 1.0),[5]
- Opera (ab Version 7.6 Beta)
- Apple Safari (ab Version 1.2),[6]
- Konqueror und alle anderen KHTML-Derivate.
Wie aus den Schnittstellenbeschreibungen der verschiedenen XMLHttpRequest-Implementierungen hervorgeht, sind diese nicht vollständig kompatibel zueinander. Aus diesem Grund wurde im Dezember 2012 eine einheitliche Definition des XMLHttpRequest-Objekts durch das W3C zur Standardisierung vorgeschlagen.[7]
Seit Ende 2012 wird die Spezifikation als fortlaufend weiterentwickelter Living Standard von der WHATWG geführt.[8]
Codebeispiel (JavaScript)
[Bearbeiten | Quelltext bearbeiten]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
[Bearbeiten | Quelltext bearbeiten]XMLHttpRequest Level 2 war ein Arbeitsentwurf (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.[9][8]
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ On-Demand Javascript. In: ajaxpatterns.org. 30. Juli 2014, archiviert vom am 24. Juli 2015; abgerufen am 2. Dezember 2023 (englisch).
- ↑ XMLHttpRequest API. In: developer.mozilla.org. Mozilla, 8. November 2023, abgerufen am 30. November 2023 (englisch).
- ↑ Fetch API. In: developer.mozilla.org. Mozilla, 1. April 2023, abgerufen am 30. November 2023 (englisch).
- ↑ IXMLHTTPRequest Members. In: learn.microsoft.com. Microsoft, 27. Oktober 2016, abgerufen am 2. Dezember 2023 (englisch, Schnittstellenbeschreibung des XMLHttpRequest-Objekts für den IE).
- ↑ XMLHttpRequest. In: developer.mozilla.org. Mozilla, 22. November 2023, abgerufen am 2. Dezember 2023 (englisch, Schnittstellenbeschreibung des XMLHttpRequest-Objekts für Mozilla).
- ↑ Dynamic HTML and XML: The XMLHttpRequest Object. In: developer.apple.com. Apple, 24. Juni 2005, archiviert vom am 25. September 2011; abgerufen am 2. Dezember 2023 (englisch, Schnittstellenbeschreibung des XMLHttpRequest-Objekts für Safari).
- ↑ Anne van Kesteren et al.: XMLHttpRequest Level 1. In: w3.org. World Wide Web Consortium, 6. Oktober 2016, abgerufen am 2. Dezember 2023 (englisch, Schnittstellenbeschreibung des XMLHttpRequest-Objekts vorgeschlagen durch das W3C).
- 1 2 XMLHttpRequest Standard. 1.1. Specification history. In: xhr.spec.whatwg.org. Web Hypertext Application Technology Working Group (WHATWG), 27. September 2023, abgerufen am 2. Dezember 2023 (englisch).
- ↑ Anne van Kesteren et al.: XMLHttpRequest Level 2. In: w3.org. World Wide Web Consortium, 18. November 2014, abgerufen am 2. Dezember 2023 (englisch).