Ursprünglich entwarf Microsoft XMLHttpRequest, um Internet Explorer (IE) zu erlauben XML Dokumente vom Javascript zu laden. Obwohl es XML in seinem Namen hat, ist XMLHttpRequest wirklich ein generischer HTTP Klient für Javascript. Mit ihm kann Javascript bilden, HTTP Anträge ZU ERHALTEN und BEKANNTZUGEBEN. (für PFOSTEN-Anträge, können Daten zum Bediener in einem Format Ihres Wählens geschickt werden.) Die Hauptbeschränkungen zu XMLHttpRequest liegen am Datenbanksuchroutinesicherheit sandbox. Es kann nur HTTP(S) Anträge bilden (Akte URLs z.B. wird nicht Arbeit), und es kann Anträge nur zum gleichen Gebiet wie die z.Z. geladene Seite bilden.
|
|
Die Sicherheit Beschränkungen von XMLHttpRequest begrenzen die Weisen, in denen Sie es verwenden können, aber der Kompromiß in addierter Sicherheit ist wert ihn wohl. Die meisten Angriffe gegen Javascriptanwendungen zentrieren um einspritzenden böswilligen Code in die Webseite. Wenn XMLHttpRequest Anträge zu irgendeiner Web site erlaubte, würde es einem Hauptspieler in diesen Angriffen stehen. Das Sicherheit sandbox verringert diese möglichen Probleme. Zusätzlich vereinfacht es das programmierenmodell, weil der Javascriptcode allen möglichen Daten implizit vertrauen kann, die er von XMLHttpRequest lädt. Es kann den Daten vertrauen, weil die neuen Daten gerechtes so sicheres wie die Seite sind, die die Ausgangsseite lud.
Obwohl XMLHttpRequest nur eine kleine API und gerade eine Handvoll Methoden und Eigenschaften liefert, hat es seine Unterschiede zwischen Datenbanksuchroutinen. Diese Unterschiede sind hauptsächlich im anfassenden Fall und wenden instantiation (in IE, ist XMLHttpRequest wirklich ein ActiveX Gegenstand) ein, also sind sie nicht hart, herum zu arbeiten. Im folgenden Überblick über das XMLHttpRequest API, wird die Mozilla Syntax für XMLHttpRequest instantiation verwendet. Wenn Sie die Beispiele in IE laufen lassen möchten, müssen Sie neues XMLHttpRequest() ersetzen; mit jedem neuen ActiveXObject("MSXML2.XMLHTTP.3.0"); oder die volle Kreuz-Datenbanksuchroutine instantiation Methode gezeigt im "Kreuz-Datenbanksuchroutine XMLHttpRequest" Abschnitt dieses Artikels.
XMLHttpRequest ist die am meisten-verwendete Methode für AJAX Kommunikationen, weil es zwei einzigartige Eigenschaften liefert. Die erste Eigenschaft liefert die Fähigkeit, neuen Inhalt ohne diesen Inhalt zu laden, der in jeder Hinsicht geändert wird, die es extrem einfach, AJAX in Ihre normalen Entwicklung Muster zu passen bildet. Die zweite Eigenschaft läßt Javascript synchrone Anrufe bilden. Ein synchroner Anruf stoppt alle weiteren Betriebe, bis er komplett ist, und während dieses nicht eine Wahl ist, die normalerweise verwendet wird, kann es in den Fällen nützlich sein, in denen der gegenwärtige Antrag durchgeführt werden muß, bevor weitere Maßnahmen ergriffen werden.
Die geöffnete Methode wird verwendet, um die Antragart einzustellen (ERHALTEN Sie, GEBEN Sie bekannt, GESETZT oder PROPFIND), das URL der Seite, die erbeten wird und ob der Anruf asynchron ist. Ein username und ein Kennwort für HTTP Authentisierung können auch beliebig geführt werden. Das URL kann entweder ein relativer Weg (wie page.html) oder ein komplettes sein, das die Adresse des Bedieners einschließt (wie http://blog.joshuaeichorn.com/page.html). Die grundlegende Methode Unterzeichnung ist:
Im Javascriptklima sind Sicherheit Beschränkungen im Platz. Diese Sicherheit Beschränkungen veranlassen die geöffnete Methode, eine Ausnahme zu werfen, wenn das URL von einem anderen Gebiet als die aktuelle Seite ist. Der folgende Beispielgebrauch, der zum Satz oben ein synchrones geöffnet ist, GELANGT Antrag an index.html:
Die sendenmethode stellt die Beziehung zum URL spezifiziert in geöffnetem her. Wenn der Antrag asynchron ist, bringt der Anruf ihn sofort zurück; andernfalls blockiert der Anruf weitere Durchführung, bis die Seite downloadet worden ist. Wenn die Antragart PFOSTEN ist, wird die Nutzlast als der Körper des Antrags gesendet, der zum Bediener geschickt wird. Die Methode Unterzeichnung ist:
Wenn Sie einen PFOSTEN-Antrag bilden, müssen Sie die Inhalt-Art Überschrift einstellen. Auf diese Weise, der Bediener weiß was, mit dem gehochladenen Inhalt zu tun. Auf den Nachahmer, der eine Form mit HTTP PFOSTEN sendet, stellten Sie die zufriedene Art auf application/x-www-form-urlencoded ein. URLencoded Daten sind das gleiche Format, das Sie in ein URL nach "?" sehen. Sie können ein Beispiel dieser kodierten Daten sehen, indem Sie eine Form bilden und seine Methode einstellen, um ZU ERHALTEN. Das folgende Beispiel zeigt einen synchronen PFOSTEN-Antrag zu index.php, das eine URLencoded Nutzlast sendet. Wenn index.php <?php var_dump($_POST) enthält; ? >, Sie können die eingereichten übersetzten Daten sehen, als ob es eine normale Form im Alarm ist:
Es gibt viele unterschiedliche Fälle, in denen, eine Überschrift auf einem Antrag einzustellen nützlich sein konnte. Der allgemeinste Gebrauch von setRequestHeader() soll die Inhalt-Art einstellen, weil die meisten Netzanwendungen bereits bestimmte Arten, wie URLencoded beschäftigen können. Die setRequestHeader Methode Unterzeichnung nimmt zwei Parameter: die Überschrift zum einzustellen und sein Wert:
Weil die Anträge, die mit XMLHttpRequest gesendet werden, die gleichen Standardüberschriften, einschließlich Plätzchenüberschriften senden und HTTP Authentisierung Überschriften, wie normaler Datenbanksuchroutineantrag, ist der Überschriftname normalerweise der Name der HTTP Überschrift, die Sie überlaufen möchten. Zusätzlich zu überlaufenden Rückstellung Überschriften ist setRequestHeader für die Einstellung der Gewohnheit, anwendungsspezifische Überschriften nützlich. Kundenspezifische Überschriften werden im Allgemeinen mit x vorgesetzt, um sie vom Standard zu unterscheiden eine. Das folgende Beispiel läßt ein synchrones den Antrag ERHALTEN, der eine Überschrift hinzufügt, die X-foo test.php genannt wird. Wenn test.php <?php var_dump($_SERVER) enthält; ? >, Sie sehen die eingereichte Überschrift im Alarm:
Die geTResponseHeader Methode erlaubt Ihnen, eine einzelne Überschrift von der Antwort zu erhalten; dieses ist besonders nützlich, wenn alle, die Sie benötigen, eine Überschrift wie Inhalt-Art ist; merken Sie, daß die spezifizierte Überschrift Schachtel-unempfindlich ist. Die Methode Unterzeichnung ist, wie folgt:
getAllResponseHeaders bringt alle Überschriften von der Antwort in einer einzelnen Zeichenkette zurück; dieses ist für das Ausprüfen oder das Suchen nach einem Wert nützlich. Das folgende Beispiel läßt ein synchrones Antrag an test.html GELANGEN. Wenn der Klient eine Antwort empfängt, wird die Inhalt-Art alarmiert und alle Überschriften werden alarmiert:
Alle Datenbanksuchroutinen führen eine abort() Methode ein, die verwendet wird, um einen in-progress asynchronen Antrag zu annullieren. (ein Beispiel von diesem wird im Abschnitt gezeigt ", sendend der asynchronen Anträge" in diesem Artikel.) Mozilla-gegründete Datenbanksuchroutinen bieten auch einige Extramethoden auf die grundlegende API an; zum Beispiel liefern addEventListener() und removeEventListener() eine Weise, sich Statusfälle zu verfangen, ohne die * Eigenschaften an zu verwenden. Es gibt auch eine overrideMimeType() Methode, die Marken es möglich, die Inhalt-Art zu text/xml zu zwingen, damit es in ein DOM Dokument analysiert wird, selbst wenn der Bediener über es nicht als solcher berichtet. Die Mozilla-spezifischen Methoden können unter bestimmten Umständen nützlich sein, aber in den meisten Fällen, sollten Sie weg von ihnen bleiben, weil nicht alle Datenbanksuchroutinen sie stützen.
XMLHttpRequest liefert eine Anzahl von Eigenschaften, die Informationen oder Resultate über den Antrag liefern. Die meisten Eigenschaften sind self-explanatory; Sie lesen einfach den Wert und fungieren auf ihm. An * Eigenschaften sind Fallzufuhren, die verwendet werden, indem man eine Funktion ihnen zuweist. Eine Liste aller Eigenschaften folgt:
Anmerkung
Mozilla stellt Fallzufuhren, wie
onreadystatechange zurück, nachdem ein Antrag durchgeführt ist, also
müssen Sie sie zurückstellen, wenn Sie mehrfache Anrufe mit dem
gleichen Gegenstand bilden.
Die folgende Tabelle zeigt die möglichen Werte für die readyState Variable. Sie bringt eine Zahl zurück, welche die gegenwärtige Lage des Gegenstandes darstellt. Jeder Antrag kommt durch die Liste von readyStates weiter
| readyState Status-Code | Status des XMLHttpRequest Gegenstandes |
|---|---|
| (0) UNINITIALIZED | Der Gegenstand ist verursacht worden, aber initialisiert worden nicht. (die geöffnete Methode ist nicht. benannt worden) |
| (1) LADEN | Der Gegenstand ist verursacht worden, aber die sendenmethode ist nicht benannt worden. |
| (2) GELADEN | Die sendenmethode ist benannt worden, aber der Status und die Überschriften sind nicht noch vorhanden. |
| (3) WECHSELWIRKEND | Etwas Daten sind empfangen worden. Das Benennen der responseBody und responseText Eigenschaften an diesem Zustand, um teilweise Resultate zu erreichen bringt eine Störung zurück, weil Status- und Warteüberschriften nicht völlig vorhanden sind-. |
| (4) DURCHGEFÜHRT | Alle Daten sind empfangen worden, und die kompletten Daten sind in den responseBody und responseText Eigenschaften vorhanden. |
Das variable readyState und die onreadystatechange Fallzufuhr werden, so daß jede Zeit die readyState Variable geändert wird, die onreadystatechange Fallzufuhr wird benannt verbunden.
Online: 523 users browsing the articles directory
|
|