XMLHttpRequest

XMLHttpRequest (häufig als XHR abgekürzt ) ist ein in JavaScript zugängliches Browserobjekt , mit dem Sie mithilfe von HTTP- Anforderungen Daten in XML , JSON , aber auch HTML oder sogar einfachem Text abrufen können .

Vorteile und Nachteile

Der Hauptvorteil liegt auf der asynchronen Seite. Die gesamte Seite muss nicht mehr vollständig neu geladen werden, wenn ein Teil geändert werden muss. Dies spart Zeit und verbessert die Interaktion mit dem Server und damit dem Client.

Die Nachteile sind:

Der dynamische Inhalt, der durch die Verwendung von JavaScript angezeigt wird, erklärt, warum der Browser nicht das gleiche Verhalten wie eine vollständig geladene HTML- Seite haben kann (Speichern von Links, Lesezeichen, Zurück-Schaltfläche).

Andere Unterschiede bestehen:

Der Standpunkt des Programmierers

Erstellen eines XMLHttpRequest-Objekts

Was auch immer der Browser ist:

function createXhrObject() { if (window.XMLHttpRequest) return new XMLHttpRequest(); if (window.ActiveXObject) { var names = [ "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP" ]; for(var i in names) { try{ return new ActiveXObject(names[i]); } catch(e){} } } window.alert("Votre navigateur ne prend pas en charge l'objet XMLHTTPRequest."); return null; // non supporté } xhr = createXhrObject();

Laden von ausführbarem Code

JavaScript-Code auf der über XMLHttpRequest geladenen Seite wird beim Laden nicht ausgeführt.

Sie müssen den geladenen JavaScript-Code in die aktuelle Seite einfügen, damit er ausgeführt werden kann.

Der folgende Code kann auch das zwischen <script> </ script> -Tags auf der untergeordneten Seite gefundene JavaScript ausführen, nachdem es wie zuvor beschrieben geladen wurde:

if (XHR.readyState == 4) { document.getElementById('contenu').innerHTML = XHR.responseText; var js = document.getElementById('contenu').getElementsByTagName('script'); for( var i in js ) { eval(js[i].text); } }

Historisch

XMLHttpRequest wurde zuerst von Microsoft als ActiveX- Objekt für Internet Explorer 5.0 entwickelt. (September 1998 ). Es wurde dann nacheinander unter Mozilla 1.0 übernommen und implementiert (Mai 2002), Safari 1.2 (Februar 2004), Opera 7.60 TP1 (August 2004) dann Konqueror 3.4 (März 2005).

Im April 2006 wurde vorgeschlagen, eine W3C- Empfehlung zu werden .

Die Verwendung von XMLHttpRequest erfordert die Verwendung der JavaScript-Sprache.

Browser implementieren es auf verschiedene Arten: ActiveX für Internet Explorer, Objekt für andere. Die Erstellung des Objekts erfolgt daher je nach Browser unterschiedlich. Um ActiveX in Internet Explorer zu erstellen, müssen außerdem mehrere Versionen getestet werden. Nach dem Erstellen des Objekts sind die Methoden und Attribute jedoch für alle Browser gleich.

Microsoft war der erste (September einzuarbeiten 1998 ) XMLHttp Funktionalität in seine Internet Explorer (5 bis 7) Web - Browser in Form eines ActiveX (Internet Explorer <7) unter dem Namen MSXML.

Die Entwickler des Mozilla- Projekts implementierten dann ihre XMLHTTP-Version unter dem Namen XMLHttpRequest in Mozilla Version 1.0 (Mai 2002). Andere Browser implementierten dann wiederum XMLHttp: Safari 1.2 (Februar 2004), Konqueror 3.4 (März 2005), Opera 8.0 (April 2005), icab 3.0b352.

Das World Wide Web Consortium versucht dann, die API (Programming Interface) zu standardisieren, indem es die API-Spezifikationen in seiner Version 1 unter dem Namen XMLHttpRequest on veröffentlicht15. April 2007 und Version 2 auf 25. Februar 2008. Somit existieren mehrere Implementierungen von XMLHttpRequest. Um all diese Versionen zu unterstützen, können Sie mit einer High-Level- Javascript-API ( AJAX ) die verschiedenen Implementierungen und Versionen von XMLHttpRequest ignorieren.

Zu diesem Zeitpunkt (2007) wurde XMLHttpRequest jedoch kritisiert, da es die Zugänglichkeit des Webs beeinträchtigte .

Der XMLHttpRequest-Standard hat einen Nachfolger, XMLHttpRequest Level 2 und andere Technologien ersetzen ihn ebenfalls:

  • Das W3C hatte eine Zugriffskontrolle vorgeschlagen, um Daten mit Servern in verschiedenen Domänen auszutauschen.
  • Microsoft hatte XDomainRequest angeboten, seit Internet Explorer 8 durch Version 2 des Standards ersetzt wurde.
  • WebSocket bietet die Möglichkeiten des Objekts und mehr.

Um auch zu sehen

Zum Thema passende Artikel

Externe Links

Anmerkungen und Referenzen

  1. Mozilla-Site (MDN) - XMLHttpRequest-API
  2. Wenn Elemente in einem verwalteten Widget beispielsweise über das XMLHttpRequest-Objekt geladen werden und nicht immer im DOM vorhanden sind, sollten Autoren Aria-Level, Aria-Posinset und Aria-Setsize verwenden und sicherstellen, dass Aria-Owners vorhanden sind nicht erforderlich, um die Mitgliedschaft im Widget zu übermitteln.
  3. "Changelog für Opera 7.60 Technical Preview 1 für Windows" (Version vom 21. Januar 2012 im Internetarchiv ) ,21. Januar 2012
  4. (en) Das XMLHttpRequest-Objekt oder (en) W3C - XMLHttpRequest Working Draft