„XMLHttpRequest“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
verb. |
Keine Bearbeitungszusammenfassung |
||
(20 dazwischenliegende Versionen von 14 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''XMLHttpRequest (XHR |
'''XMLHttpRequest''' (kurz: '''XHR''') ist eine [[Programmierschnittstelle]] für [[JavaScript]] zum Übertragen von Daten über [[Hypertext Transfer Protocol|HTTP]]. Entgegen des Namens muss es sich bei diesen Daten nicht um XML handeln. XMLHttpRequest bildet einen Grundbaustein der [[Ajax (Programmierung)|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 [[Frame (HTML)|HTML-Frames]] oder [[Inlineframe|IFrames]] oder mit dynamisch nachgeladenen Skript-Dateien möglich.<ref name="AP">{{Internetquelle |url=http://ajaxpatterns.org/On-Demand_Javascript |titel=On-Demand Javascript |werk=ajaxpatterns.org |datum=2014-07-30 |sprache=en |archiv-url=https://web.archive.org/web/20150724074143/http://ajaxpatterns.org/On-Demand_Javascript |archiv-datum=2015-07-24 |abruf=2023-12-02}}</ref> Da beim XMLHttpRequest-Verfahren Daten [[Asynchrone Kommunikation|asynchron]] verarbeitet werden können, muss ein Skript nicht warten, bis die Anfrage beantwortet ist, sondern kann sich so lange anderen Aufgaben zuwenden. |
|||
[[Datei:XMLHTTPRequest-Object.PNG|393px|mini|Die Schnittstellenbeschreibung des XMLHTTPRequest-Objekts gemäß dem Standardisierungsvorschlag des [[World Wide Web Consortium|W3C]].]] |
[[Datei:XMLHTTPRequest-Object.PNG|393px|mini|Die Schnittstellenbeschreibung des XMLHTTPRequest-Objekts gemäß dem Standardisierungsvorschlag des [[World Wide Web Consortium|W3C]].]] |
||
Es können HTTP-Verfahren wie [[Hypertext Transfer Protocol#HTTP-Anfragemethoden|Anfragemethoden]], [[HTTP-Authentifizierung|Authentifizierung]] und [[HTTP Caching|Caching]] verwendet werden. Wenn eine Anfrage [[Extensible Markup Language|XML]]-Daten liefert, kann XMLHttpRequest diese alternativ als Text oder als [[Document Object Model|DOM]]-Baumstruktur zurücksenden. Letzteres eignet sich beispielsweise dazu, mit [[Webservice]]s zu kommunizieren. |
|||
Mit der Einführung von [[Web Worker]]s wurde XHR durch die Fetch API abgelöst.<ref>{{Internetquelle |url=https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest_API |titel=XMLHttpRequest API |werk=developer.mozilla.org |hrsg=Mozilla |datum=2023-11-08 |sprache=en |abruf=2023-11-30}}</ref><ref>{{Internetquelle |url=https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API |titel=Fetch API |werk=developer.mozilla.org |hrsg=Mozilla |datum=2023-04-01 |sprache=en |abruf=2023-11-30}}</ref> |
|||
== Geschichte == |
== Geschichte == |
||
Die XMLHttpRequest-Technik wurde ursprünglich von [[Microsoft]] entwickelt und |
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, neben dem ''Internet Explorer''<ref name="IEIDL">{{Internetquelle |url=https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ms760305(v=vs.85) |titel=IXMLHTTPRequest Members |werk=learn.microsoft.com |hrsg=Microsoft |datum=2016-10-27 |sprache=en |abruf=2023-12-02 |kommentar=Schnittstellenbeschreibung des XMLHttpRequest-Objekts für den IE}}</ref> (ab Version 7 als XMLHttpRequest) sind das [[Mozilla]] und alle anderen [[Gecko (Software)|Gecko]]-[[Abspaltung (Softwareentwicklung)|Derivate]] (ab Version 1.0),<ref name="MOZIDL">{{Internetquelle |url=https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest |titel=XMLHttpRequest |werk=developer.mozilla.org |hrsg=Mozilla |datum=2023-11-22 |sprache=en |abruf=2023-12-02 |kommentar=Schnittstellenbeschreibung des XMLHttpRequest-Objekts für Mozilla}}</ref> [[Opera (Browser)|Opera]] (ab Version 7.6 Beta) und [[Apple Safari]] (ab Version 1.2),<ref name="SAFIDL">{{Internetquelle |url=http://developer.apple.com/internet/webcontent/xmlhttpreq.html |titel=Dynamic HTML and XML: The XMLHttpRequest Object |werk=developer.apple.com |hrsg=Apple |datum=2005-06-24 |sprache=en |archiv-url=https://web.archive.org/web/20110925012653/http://developer.apple.com/internet/webcontent/xmlhttpreq.html |archiv-datum=2011-09-25 |abruf=2023-12-02 |kommentar=Schnittstellenbeschreibung des XMLHttpRequest-Objekts für Safari}}</ref> [[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 [[World Wide Web Consortium|W3C]] zur Standardisierung vorgeschlagen.<ref name="W3CIDL">{{Internetquelle |autor=Anne van Kesteren et al. |url=https://www.w3.org/TR/XMLHttpRequest/ |titel=XMLHttpRequest Level 1 |werk=w3.org |hrsg=World Wide Web Consortium |datum=2016-10-06 |sprache=en |abruf=2023-12-02 |kommentar=Schnittstellenbeschreibung des XMLHttpRequest-Objekts vorgeschlagen durch das W3C}}</ref> |
||
Seit Ende 2012 wird die Spezifikation als fortlaufend weiterentwickelter ''Living Standard'' von der [[WHATWG]] geführt.<ref name=":0">{{Internetquelle |url=https://xhr.spec.whatwg.org/#specification-history |titel=XMLHttpRequest Standard |titelerg=1.1. Specification history |werk=xhr.spec.whatwg.org |hrsg=Web Hypertext Application Technology Working Group (WHATWG) |datum=2023-09-27 |sprache=en |abruf=2023-12-02}}</ref> |
|||
⚫ | 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 [[World Wide Web Consortium|W3C]] zur Standardisierung vorgeschlagen.<ref name="W3CIDL"> |
||
== |
== Codebeispiel ''(JavaScript)'' == |
||
Das folgende Beispiel ruft eine Ressource auf derselben Domain über |
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: |
||
<syntaxhighlight lang="javascript"> |
<syntaxhighlight lang="javascript"> |
||
Zeile 35: | Zeile 39: | ||
</syntaxhighlight> |
</syntaxhighlight> |
||
== |
== XMLHttpRequest Level 2 == |
||
XMLHttpRequest Level 2 war ein Arbeitsentwurfs ''(working draft)'' beim [[W3C]] für eine Erweiterung der Spezifikation um u. a. [[Domain (Internet)|domain]]-übergreifende Abfragen und die Unterstützung von [[Datenstrom|Datenströmen]]. Diese Erweiterungen sind seit 2012 in den Standard aufgenommen worden.<ref>{{Internetquelle |autor=Anne van Kesteren et al. |url=https://www.w3.org/TR/XMLHttpRequest2/ |titel=XMLHttpRequest Level 2 |werk=w3.org |hrsg=World Wide Web Consortium |datum=2014-11-18 |sprache=en |abruf=2023-12-02}}</ref><ref name=":0" /> |
|||
Eine erweiterte Spezifikation von ''XMLHttpRequest'' hat beim [[W3C]] seit Januar 2012 den Status eines Arbeitsentwurfs ''(working draft).''<ref>[http://www.w3.org/TR/XMLHttpRequest2/ ''XMLHttpRequest Level 2,''] W3C</ref> Geplant sind [[Domain (Internet)|domain]]<nowiki/>übergreifende Abfragen, die Unterstützung von [[Datenstrom|Datenströmen]] usw. |
|||
== Einzelnachweise == |
== Einzelnachweise == |
||
Zeile 44: | Zeile 48: | ||
{{Navigationsleiste W3C-Standards}} |
{{Navigationsleiste W3C-Standards}} |
||
[[Kategorie:Programmierschnittstelle]] |
[[Kategorie:JavaScript-Programmierschnittstelle]] |
Aktuelle Version vom 18. Februar 2025, 12:49 Uhr
XMLHttpRequest (kurz: XHR) ist eine Programmierschnittstelle für JavaScript zum Übertragen von Daten über HTTP. Entgegen des Namens 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 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.
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.
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, neben dem Internet Explorer[4] (ab Version 7 als XMLHttpRequest) sind das Mozilla und alle anderen Gecko-Derivate (ab Version 1.0),[5] Opera (ab Version 7.6 Beta) und Apple Safari (ab Version 1.2),[6] 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.[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 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.[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).
- ↑ a b 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).