XML DOM - XMLHttpRequest-Objekt
- Vorherige Seite DOM Text
- Nächste Seite DOM XMLSerializer
XMLHttpRequest-Objekt
Das XMLHttpRequest-Objekt bietet vollständigen Zugriff auf das HTTP-Protokoll, einschließlich der Fähigkeit, POST- und HEAD-Anfragen sowie normale GET-Anfragen durchzuführen. XMLHttpRequest kann synchron oder asynchron die Antworten des Web-Servers zurückgeben und Inhalte in Text oder Form eines DOM-Dokuments liefern.
Obwohl es XMLHttpRequest heißt, ist es nicht auf die Verwendung mit XML-Dokumenten beschränkt: Es kann jede Form von Textdokument empfangen.
Das XMLHttpRequest-Objekt ist benannt nach AJAX einer Schlüsselfunktion der Web-Anwendungarchitektur.
Browserunterstützung
XMLHttpRequest wird von allen modernen Browsern gut unterstützt. Die einzige Browser-abhängigkeit betrifft die Erstellung des XMLHttpRequest-Objekts. In IE 5 und IE 6 muss der spezifische IE-Constructor ActiveXObject() verwendet werden. Wie in XMLHttpRequest-Objekt Das in diesem Abschnitt vorgestellte.
W3C-Standardisierung
Das XMLHttpRequest-Objekt ist noch nicht standardisiert, aber die W3C hat mit der Standardisierung begonnen. In diesem Handbuch werden Inhalte auf der Grundlage der Standardisierungsdrafts dargestellt.
Die aktuelle XMLHttpRequest-Implementierung ist ziemlich konsistent. Es gibt jedoch geringfügige Unterschiede zum Standard. Zum Beispiel könnte eine Implementierung null zurückgeben, während der Standard eine leere Zeichenfolge verlangt, oder eine Implementierung könnte readyState auf 3 setzen, ohne zu gewährleisten, dass alle Response-Header verfügbar sind.
Attribut
readyState
Der Status der HTTP-Anfrage. Wenn ein XMLHttpRequest erstmalig erstellt wird, beginnt der Wert dieses Attributes mit 0 und erhöht sich bis zum Empfang der vollständigen HTTP-Antwort.
Jeder der 5 Status hat einen damit verbundenen informellen Namen. Nachstehend ist eine Tabelle mit Status, Namen und Bedeutung aufgeführt:
Status | Name | Beschreibung |
---|---|---|
0 | Uninitialized | Initialisierungsstatus. Das XMLHttpRequest-Objekt wurde erstellt oder durch das abort() -Verfahren zurückgesetzt. |
1 | Open | Das open() -Verfahren wurde aufgerufen, aber das send() -Verfahren wurde nicht aufgerufen. Die Anfrage wurde noch nicht gesendet. |
2 | Sent | Das Send() -Verfahren wurde aufgerufen, die HTTP-Anfrage wurde an den Web-Server gesendet. Es wurde keine Antwort empfangen. |
3 | Receiving | Alle Response-Header wurden empfangen. Der Response-Body wird empfangen, aber noch nicht abgeschlossen. |
4 | Loaded | Der HTTP-Antwort wurde vollständig empfangen. |
Der Wert von readyState wird nicht verringert, es sei denn, wenn das abort() oder open() -Verfahren während des Verarbeitungsprozesses eines Antrags aufgerufen wird. Jedes Mal, wenn der Wert dieses Attributes erhöht wird, wird der onreadystatechange -Handler ausgelöst.
responseText
Der bisher empfangene Response-Body für den Server (ohne Header), oder ein leerer String, wenn noch keine Daten empfangen wurden.
Wenn der readyState kleiner als 3 ist, ist dieses Attribut ein leerer String. Wenn der readyState 3 ist, gibt dieses Attribut den bereits empfangenen Teil der Antwort zurück. Wenn der readyState 4 ist, speichert dieses Attribut den vollständigen Response-Body.
verwendet, wenn die Antwort den Header mit der angegebenen Zeichencodierung für den Response-Body enthält. Andernfalls wird angenommen, dass Unicode UTF-8 verwendet wird.
responseXML
Die Antwort auf die Anfrage wird als XML interpretiert und als Dokument-Objektzurückgegeben.
status
von dem Server zurückgegeben HTTP-Statuscode, wie z.B. 200 für Erfolg oder 404 für den Fehler "Not Found". Das Lesen dieses Attributs führt zu einer Ausnahme, wenn der readyState kleiner als 3 ist.
statusText
Diese Eigenschaft gibt den HTTP-Statuscode der Anfrage durch Name anstatt durch Zahl an. Das bedeutet, wenn der Status 200 ist, ist es "OK", wenn der Status 404 ist, ist es "Not Found". Wie der status-Attribut, führt das Lesen dieses Attributs, wenn der readyState kleiner als 3 ist, zu einer Ausnahme.
Ereignisbehandlungsfunction
onreadystatechange
Wird der Ereignisbehandlungsfunction aufgerufen, wenn sich der readyState-Attribut ändert. Wenn der readyState 3 ist, kann es auch mehrmals aufgerufen werden.
Methode
abort()
Abbrechen der aktuellen Antwort, Schließen der Verbindung und Beenden aller laufenden Netzwerkaktivitäten.
Diese Methode setzt das XMLHttpRequest-Objekt in den Zustand readyState 0 zurück und取消所有未决的网络活动。 Zum Beispiel kann diese Methode aufgerufen werden, wenn eine Anfrage zu lange dauert und die Antwort nicht mehr erforderlich ist.
getAllResponseHeaders()
Rückgabe des HTTP-Antwortkopfes als nicht verarbeitete Zeichenkette.
Wenn der readyState kleiner als 3 ist, gibt diese Methode null zurück. Andernfalls gibt sie alle von dem Server gesendeten HTTP-Antwortkopfzeilen zurück. Die Header werden als einzelne Zeichenkette zurückgegeben, eine Kopfzeile pro Zeile. Jede Zeile wird durch einen Zeilenumbruch "\r\n" getrennt.
getResponseHeader()
Rückgabe des Wertes des angeforderten HTTP-Antwortkopfes. Der Parameter ist der Name des HTTP-Antwortkopfes, der zurückgegeben werden soll. Der Headername kann in jeder Groß- und Kleinschreibung angegeben werden, und die Vergleichung mit dem Header ist nicht groß- oder kleinschreibungsabhängig.
Der Rückgabewert dieser Methode ist der Wert der angeforderten HTTP-Antwortkopfzeile. Wenn dieser Kopf nicht empfangen wurde oder der readyState kleiner als 3 ist, wird eine leere Zeichenkette zurückgegeben. Wenn mehrere Header mit einem bestimmten Namen empfangen werden, werden die Werte der Header miteinander verbunden und zurückgegeben, getrennt durch Komma und Leerzeichen.
open()
Initialisieren der HTTP-Antragsparameter, wie z.B. URL und HTTP-Methode, aber ohne den Antrag zu senden.
send()
Senden eines HTTP-Antrags, unter Verwendung der Parameter, die an die open()-Methode übergeben werden, sowie eines optionalen Antragskörpers, der an diese Methode übergeben wird.
setRequestHeader()
Setzen oder Hinzufügen eines HTTP-Antrags an eine geöffnete, aber noch nicht gesendete Anfrage.
XMLHttpRequest.open()
Initialisiere die HTTP-Anfrageparameter
Syntax
open(method, url, async, username, password)
Der Parameter method ist die HTTP-Methode, die für die Anfrage verwendet wird. Die Werte umfassen GET, POST und HEAD.
Der Parameter url ist der Hauptteil der Anfrage. Die meisten Browser implementieren eine Same-Origin-Sicherheitsstrategie und erfordern, dass diese URL den Hostnamen und den Port des Texts, der den Skript enthält, hat.
Der Parameter async gibt an, dass die Anfrage asynchron ausgeführt werden soll. Wenn dieser Parameter false ist, ist die Anfrage synchron, und der weitere Aufruf von send() wird blockiert, bis die Antwort vollständig empfangen wurde. Wenn dieser Parameter true ist oder weggelassen wird, ist die Anfrage asynchron und es wird in der Regel ein onreadystatechange-Eventhandler erforderlich.
Die Parameter username und password sind optional und bieten die Berechtigung für die Autorisierung, die für die URL erforderlich ist. Wenn sie angegeben sind, überschreiben sie alle Berechtigungen, die von der URL selbst angegeben sind.
Erklärung
Diese Methode initialisiert die Anfrageparameter für die spätere Verwendung durch das send()-Verfahren. Sie setzt den readyState auf 1, löscht alle zuvor angegebenen Anfragekopfzeilen und alle zuvor empfangenen Antwortkopfzeilen und setzt die Parameter responseText, responseXML, status und statusText auf ihre Standardwerte. Es ist sicher, diese Methode aufzurufen, wenn der readyState 0 ist (wenn das XMLHttpRequest-Objekt gerade erstellt wurde oder das abort()-Verfahren aufgerufen wurde) und wenn der readyState 4 ist (wenn die Antwort empfangen wurde). Wenn diese Methode für alle anderen Zustände aufgerufen wird, ist das Verhalten der open()-Methode spezifiziert.
Der open()-Method hat außer dem Speichern der für das send()-Verfahren erforderlichen Anfrageparameter und dem Zurücksetzen des XMLHttpRequest-Objekts für die Wiederverwendung keine anderen Verhaltensweisen. Besonders zu beachten ist, dass bei Aufruf dieser Methode in der Regel keine Netzwerkverbindung zu einem Webserver geöffnet wird.
XMLHttpRequest.send()
Eine HTTP-Anfrage senden
Syntax
send(body)
Wenn die HTTP-Methode, die durch das Aufrufen von open() angegeben wird, POST oder PUT ist, spezifiziert der body-Parameter den Request-Body als Zeichenkette oder Dokument-ObjektWenn der Request-Body nicht zwingend erforderlich ist, ist dieses Parameter null. Für alle anderen Methoden ist dieses Parameter nicht verfügbar und sollte null sein (einige Implementierungen erlauben die Auslassung dieses Parameters nicht).
Erklärung
Diese Methode führt eine HTTP-Anfrage aus. Wird open() zuvor nicht aufgerufen oder genauer gesagt, wenn der readyState nicht 1 ist, wirft send() eine Ausnahme. Andernfalls sendet es eine HTTP-Anfrage, die aus folgenden Teilen besteht:
- Die für den Aufruf von open() zuvor angegebenen HTTP-Methode, URL und Authentifizierungsdetails (falls vorhanden).
- Die für den Header der Anfrage zuvor mit setRequestHeader() angegebenen Werte (falls vorhanden).
- Übergeben an diese Methode body Parameter.
Sobald die Anfrage veröffentlicht wurde, setzt send() den readyState auf 2 und löst den onreadystatechange-Eventhandler aus.
Wenn der Parameter async des zuvor aufgerufenen open() auf false gesetzt ist, wird diese Methode blockieren und nicht zurückkehren, bis der readyState 4 ist und die Antwort des Servers vollständig empfangen wurde. Andernfalls, wenn der Parameter async auf true gesetzt ist oder dieser Parameter weggelassen wurde, kehrt send() sofort zurück und wie nachstehend erläutert, wird die Serverantwort in einem Hintergrundprozess verarbeitet.
Wenn die Serverantwort eine HTTP-Umleitung enthält, wird die Methode send() oder der Hintergrundprozess automatisch die Umleitung befolgen. Wenn alle HTTP-Antwortheader empfangen wurden, setzt send() oder der Hintergrundprozess den readyState auf 3 und löst den onreadystatechange-Eventhandler aus. Wenn die Antwort länger ist, kann send() oder der Hintergrundprozess den onreadystatechange-Eventhandler im Status 3 auslösen: Dies kann als Download- Fortschrittsindikator dienen. Schließlich, wenn die Antwort abgeschlossen ist, setzt send() oder der Hintergrundprozess den readyState auf 4 und löst den Eventhandler zum letzten Mal aus.
XMLHttpRequest.setRequestHeader()
Syntax
setRequestHeader(name, value)
Der Parameter name ist der Name des zu setzenden Headers. Dieser Parameter sollte keine Leerzeichen, Punkte oder Zeilenumbrüche enthalten.
Der Parameter value ist der Wert des Headers. Dieser Parameter sollte keine Zeilenumbrüche enthalten.
Erklärung
Die Methode setRequestHeader() spezifiziert einen Header für eine HTTP-Anfrage, der in der Anfrage enthalten sein sollte, die durch den nachfolgenden Aufruf von send() veröffentlicht wird. Diese Methode kann nur aufgerufen werden, wenn der readyState 1 ist, z.B. nach dem Aufruf von open(), aber vor dem Aufruf von send().
Wenn der Header mit der angegebenen Bezeichnung bereits angegeben wurde, ist der neue Wert dieses Headers: Der zuvor angegebene Wert, ergänzt um Komma, Leerzeichen sowie den Wert der aktuellen Aufruf.
Wenn die open()-Aufruf eine Authentifizierung qualifiziert, sendet XMLHttpRequest automatisch einen angemessenen Authorization-Request-Header. Aber du kannst diesen Header mit setRequestHeader() hinzufügen. Ähnlich, wenn der Webserver bereits ein Cookie gespeichert hat, das mit der URL zusammenhängt, die an open() übergeben wurde, werden angemessene Cookie- oder Cookie2-Header automatisch in die Anfrage einbezogen. Diese Cookies können durch Aufruf von setRequestHeader() zu den Headers hinzugefügt werden. XMLHttpRequest kann auch einen Standardwert für den User-Agent-Header bereitstellen. Wenn es das tut, wird jeder von dir angegebene Wert an diesen Standardwert angehängt.
Einige Request-Header werden automatisch durch XMLHttpRequest gesetzt,而不是 durch diese Methode, um dem HTTP-Protokoll zu entsprechen. Dazu gehören auch Header, die mit Proxys zusammenhängen:
- Host
- Connection
- Keep-Alive
- Accept-charset
- Accept-Encoding
- If-Modified-Since
- If-None-Match
- If-Range
- Range
- Vorherige Seite DOM Text
- Nächste Seite DOM XMLSerializer