XMLHttpRequest Details und Making Asynchrone Aufträge in Ajax

Unabhängig davon, wie das XMLHttpRequest-Typ instanziiert wird, und unabhängig vom Browser oder Plattform, hat XMLHttpRequest die gleichen Methoden und Eigenschaften. Tabelle 4-1 definiert die Eigenschaften und Methoden. Ich geben keine Einzelheiten zu den Methoden, wie sie in dem Artikel verwendet werden. Aber ich möchte hier die besondere Aufmerksamkeit, um die Eigenschaften zu geben, weil sie intensiv genutzt werden. Wenn Es ist ein Antrag Daten abgerufen werden vier Objekte verwendet, um anzuzeigen, wie die Anfrage ergangen ist. Betrachten Sie den folgenden HTML-Code an, welche die vier Eigenschaften und wird nach der Methode "Send" genannt hat abgeschlossen:

document.getElementById ( 'httpcode'). innerHTML = xmlhttp.status; document.getElementById ( 'httpStatus'). innerHTML = xmlhttp.statusText; document.getElementById ( 'result'). xmlhttp.responseText innerHTML = document.getElementById; ( ' xmlResult '). innerHTML = XMLHTTP.responseXML;
  

Die vier Eigenschaften lassen sich in zwei Unterkategorien: Ergebnis-und HTTP-Status unterteilt werden. Der Status und die statusText Eigenschaften abzurufen den HTTP-Ergebnis-Codes. Der Status-Eigenschaft enthält einen Integer-Wert, zB 200 für den Erfolg. Die statusText Eigenschaft enthält eine textuelle Beschreibung des HTTP-Ergebnis-Code, wie Sie auf OK. Die responseText responseXML Eigenschaften enthalten und das Ergebnis der HTTP-Anfrage. Der Unterschied zwischen den beiden Eigenschaften ist, dass responseText einen String-Puffer der Ergebnisse enthält, und responseXML verweist auf ein XML-DOM-Darstellung der Ergebnisse.

Making Asynchrone AufträgeEs ist möglich, das XMLHttpRequest-Objekt in ein synchroner Weise zu nutzen, was bedeutet, dass der Zeitpunkt genannt wird, stoppt die Verarbeitung, die Browser-Nachrichten zu senden und wartet auf eine Antwort. Aber es ist eine schlechte Idee, das XMLHttpRequest-Objekt in ein synchroner Weise zu nutzen, wie Er verriegelt den Browser.

Für den Augenblick, ohne auf die LoadAtomFeed-Code und die Konzentration auf XMLHttpRequest, lassen Sie uns anschauen, wie der Browser kann gesperrt werden. Das folgende Beispiel ist eine ASP.NET-Seite, die für zehn Sekunden hängt, und es wird durch das XMLHttpRequest-Objekt referenziert werden:

<% @ Page Language = "C #"%>  Hanging Seite  <% System.Threading.Thread.Sleep (10000);%> Hallo, nach einer Zehn-Sekunden-Schlaf! 

Das ASP.NET-Probe wird geschrieben, unter Verwendung der Programmiersprache C #, und es gibt eine Anweisung, System.Threading.Thread.Sleep. Die einzige Anweisung bewirkt, dass der aktuelle Thread für zehn Sekunden schlafen. Die Lösung ist die Verwendung eines asynchronen Ajax XMLHttpRequest. Eine asynchrone Forderung blockiert nicht die Browser, und der Benutzer kann weiter klicken oder mit anderen Registerkarten des Browsers. Der folgende Quelltext ist das richtig geschrieben Ajax-Anwendung, um eine asynchrone Anfrage verwenden:

 Beispielseite    

Dokument Kein Ergebnis Kein Ergebnis

Es gibt einige neue Ergänzungen der Ajax-Anwendung neu geschrieben, und sie befassen sich mit den technischen Aspekten der Laden von Inhalt asynchron. Beginnen wir mit der Konzentration auf die GetIt Funktion. Die Umsetzung der GetIt ist vergleichbar mit früheren Ajax-Anwendung Beispiele, es sei denn, dass der dritte Parameter der offenen wahr ist, um anzuzeigen, dass der Request asynchron sein wird. Dies bedeutet, dass, wenn die Sende-Methode aufgerufen wird , wird es sofort wieder. Wenn XMLHttpRequest arbeitet im asynchronen Modus, ist das Feedback für den Anrufer über den Stand der Anfrage. Die Eigenschaft onreadystatechange ist eine Funktion, die das Feedback erhält. Es ist wichtig zu beachten, dass die Feedback-Funktion zugewiesen werden, müssen vor jedem senden, weil auf Anfrage Abschluss der Eigenschaft onreadystatechange zurückgesetzt wird. Dies ist in der Mozilla und Firefox Quelle der Hand.

Die onreadstatechange Eigentum zugeteilt ist, die AsyncUpdateEvent Funktion. Bei der Durchführung des AsyncUpdateEvent ist eine switch-Anweisung, dass Tests den aktuellen Stand des Antrags. Wenn eine asynchrone Antrag gestellt wird, wird das Skript kostenlos weiter ausgeführt anderen Code. Dies könnte zu Problemen führen, wenn das Skript versucht, die Ergebnisse vor der Anfrage lesen Anfrage ist abgeschlossen. Mit dem readyState Eigenschaft ist es möglich, auf die Bühne der HTTP-Anfrage wissen. Die readyState Eigenschaft kann eine der fünf Werte enthalten, wo jeder Wert stellt einen Antrag Zustand:

• 0: The XMLHttpRequest-Instanz ist in einem inkonsistenten Zustand, und das Ergebnis Daten sollten nicht referenziert werden.

• 1: Ein Antrag ist im Gange, und das Ergebnis Daten sollten nicht abgerufen werden.

• 2: Der Antrag ist das Ergebnis heruntergeladenen Daten und bereitet sie als Referenz.

• 3: Das Skript kann mit dem XMLHttpRequest-Instanz zu kommunizieren, auch wenn die Daten nicht vollständig geladen ist.

• 4: Der Antrag und das Ergebnis Daten sind vollständig und beendet worden sind.

Der Antrag ist ausgeführt, scheint darauf hinzudeuten, dass es möglich ist, um verschiedene Eigenschaften in verschiedenen Staaten zu manipulieren. Das Problem ist, dass nicht von allen Browsern die gleiche Eigenschaft Staaten auf den gleichen Zustand Codes unterstützen. Die einzige Cross-Plattform-Lösung besteht darin, auf das XMLHttpRequest-Ergebnis Eigenschaften (Status, statusText, responseText und responseXML), wenn der Antrag Staat ist gleich 4 ist. Wenn der Antrag Zustand 4 ist, können Sie sicher sein, dass das Ergebnis Eigenschaften einen gültigen Wert enthalten.

Die Ausführung der asynchronen Ajax-Anwendung führt zu einem Aufruf wird gemacht, und der Browser wird nicht gesperrt. Sie können die Schaltfläche klicken, öffnen Sie ein neues Browser und surfen Sie zu einer anderen Website.

Ein Artikel eingereicht von Sonja Lande


Disclaimer:Unsere Website ist nicht verantwortlich für den Inhalt dieses Artikels. Webarticles ist eine kostenlose Informationsquelle.
Wichtig: Dieser Artikel "XMLHttpRequest Details und Making Asynchrone Aufträge in Ajax" wurde durch ein automatisches Software übersetzt. Wir fühlen uns leid für alle Rechtschreibfehler, die möglicherweise aufgetreten sind. Vielen Dank für Ihr Verständnis.


Online: 418 users browsing the articles directory