Zum Inhalt springen

„XMLHttpRequest“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
verb.
Keine Bearbeitungszusammenfassung
 
(20 dazwischenliegende Versionen von 14 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''XMLHttpRequest (XHR)''' ist eine [[Programmierschnittstelle]] für [[JavaScript]] zum Übertragen von Daten über das [[Hypertext Transfer Protocol|HTTP-Protokoll]]. Entgegen dem Namen muss es sich bei diesen Daten nicht um XML handeln. ''XMLHttpRequest'' bildet einen Grundbaustein der [[Ajax (Programmierung)|Ajax]]-Technik.
'''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<ref name="AP">[http://ajaxpatterns.org/On-Demand_Javascript Ajax Patterns On-Demand Javascript]</ref> möglich. 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.
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]].]]


Mit ''XMLHttpRequest'' können sämtliche HTTP-Anfragemethoden (unter anderem GET, POST, HEAD, PUT) 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.
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 steht im ''[[Internet Explorer]]'' seit Version 5.0 als [[ActiveX]]-Objekt zur Verfügung. Viele [[Webbrowser|Browser]] unterstützen diese API, neben dem ''Internet Explorer''<ref name="IEIDL">[http://msdn.microsoft.com/de-de/library/ms760305.aspx 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">[https://developer.mozilla.org/en/XMLHttpRequest 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">[http://developer.apple.com/internet/webcontent/xmlhttpreq.html Schnittstellenbeschreibung des XMLHttpRequest-Objekts für Safari]</ref> [[Konqueror]] und alle anderen [[KHTML]]-Derivate.
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">[http://www.w3.org/TR/XMLHttpRequest/ Schnittstellenbeschreibung des XMLHttpRequest-Objekts vorgeschlagen durch das W3C]</ref>


== Codebeispiele ''(JavaScript)'' ==
== Codebeispiel ''(JavaScript)'' ==


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:
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 ==


XMLHttpRequest Level 2 war ein Arbeitsentwurfs ''(working draft)'' beim [[W3C]] für eine Erweiterung der Spezifikation um u.&nbsp;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.

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

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]

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]
  1. On-Demand Javascript. In: ajaxpatterns.org. 30. Juli 2014, archiviert vom Original am 24. Juli 2015; abgerufen am 2. Dezember 2023 (englisch).
  2. XMLHttpRequest API. In: developer.mozilla.org. Mozilla, 8. November 2023, abgerufen am 30. November 2023 (englisch).
  3. Fetch API. In: developer.mozilla.org. Mozilla, 1. April 2023, abgerufen am 30. November 2023 (englisch).
  4. IXMLHTTPRequest Members. In: learn.microsoft.com. Microsoft, 27. Oktober 2016, abgerufen am 2. Dezember 2023 (englisch, Schnittstellenbeschreibung des XMLHttpRequest-Objekts für den IE).
  5. XMLHttpRequest. In: developer.mozilla.org. Mozilla, 22. November 2023, abgerufen am 2. Dezember 2023 (englisch, Schnittstellenbeschreibung des XMLHttpRequest-Objekts für Mozilla).
  6. Dynamic HTML and XML: The XMLHttpRequest Object. In: developer.apple.com. Apple, 24. Juni 2005, archiviert vom Original am 25. September 2011; abgerufen am 2. Dezember 2023 (englisch, Schnittstellenbeschreibung des XMLHttpRequest-Objekts für Safari).
  7. 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).
  8. 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).
  9. Anne van Kesteren et al.: XMLHttpRequest Level 2. In: w3.org. World Wide Web Consortium, 18. November 2014, abgerufen am 2. Dezember 2023 (englisch).