Heim >Web-Frontend >js-Tutorial >Einführung in die 5 Zustände von Javascript ajax_Grundkenntnisse
Ich habe zufällig die Einführung des readyStae-Status in „Pragmatischer Ajax (dynamische Website-Statisierung) Eine Einführung in Web 2.0“ gesehen. Der Auszug lautet wie folgt:
0: (Nicht initialisiert) Die send( )-Methode wurde noch nicht aufgerufen
1: (Laden) Die send( )-Methode wurde aufgerufen, Anfrage läuft
2: (Geladen) Die send( )-Methode wurde abgeschlossen, die gesamte Antwort wurde empfangen.
3: (Interaktiv) Die Antwort wird analysiert
4: (Abgeschlossen) Die Antwort wurde analysiert und ist zur Ernte bereit.
0 – (nicht initialisierte) send()-Methode wurde noch nicht aufgerufen
1 – (Laden) Die send()-Methode wurde aufgerufen und die Anfrage wird gesendet
2 – (Laden abgeschlossen) Die send()-Methode wurde ausgeführt und der gesamte Antwortinhalt wurde empfangen
3 – (Interaktives) Analysieren des Antwortinhalts
4 – (Abgeschlossen) Die Analyse des Antwortinhalts ist abgeschlossen und kann auf dem Client
In den meisten anderen Büchern sind diese fünf Zustände von readyState unklar. In „Foundations of ajax (Static Dynamic Website)“ listet Tabelle 2-2 beispielsweise einfach den „Namen“ des Status auf – den Status der Anforderung: 0 = nicht initialisiert, 1 = wird geladen, 2 = geladen, 3 = interaktiv und 4 = abgeschlossen. Allerdings scheint „Ajax (dynamische Website-Statisierung) in Aktion“ die Details dieser fünf Zustände überhaupt nicht zu erwähnen. Obwohl „Professionelles Ajax (statische Website-Statisierung)“ nicht zufriedenstellend ist, hat es dennoch Vorteile:
Es gibt fünf mögliche Werte für readyState:
0 (Nicht initialisiert): Das Objekt wurde erstellt, aber die open()-Methode wurde nicht aufgerufen
1 (Laden): Die open()-Methode wurde aufgerufen, aber die Anfrage wurde nicht gesendet
2 (Geladen): Die Anfrage wurde gesendet
3 (Interaktiv). Eine Teilantwort ist eingegangen
4 (Abgeschlossen): Alle Daten wurden empfangen und die Verbindung wurde geschlossen.
readyState hat fünf mögliche Werte:
0 (nicht initialisiert): (xml(Standardisierung rückt näher) HttpRequest)-Objekt wurde erstellt, aber die open()-Methode wurde nicht aufgerufen.
1 (Laden): Die open()-Methode wurde aufgerufen, aber die Anfrage wurde noch nicht gesendet.
2 (Ladevorgang abgeschlossen): Die Anfrage wurde gesendet.
3 (Interaktiv): Teilantwortdaten können empfangen werden.
4 (Abgeschlossen): Alle Daten wurden empfangen und die Verbindung wurde geschlossen.
In „Ajax verstehen (statische Website-Statisierung): Mit JavaScript Rich-Internet-Anwendungen erstellen“ wird die folgende Tabelle zur Veranschaulichung verwendet:
readyState-Statuscode
Status des XML-HttpRequest-Objekts (Standardisierung rückt näher)
(0) NICHT INITIALISIERT
Nicht initialisiert Das Objekt wurde erstellt, aber nicht initialisiert (Die offene Methode wurde nicht aufgerufen.)
(xml (Standardisierung rückt näher) HttpRequest)-Objekt wurde erstellt, aber nicht initialisiert (die Open-Methode wurde noch nicht aufgerufen).
(1) LADEN
Laden Das Objekt wurde erstellt, aber die Sendemethode wurde nicht aufgerufen.
(xml (Standardisierung rückt näher) HttpRequest)-Objekt wurde erstellt, aber die Sendemethode wurde noch nicht aufgerufen.
(2) GELADEN
Laden abgeschlossen. Die Sendemethode wurde aufgerufen, aber der Status und die Header sind noch nicht verfügbar.
Die Sendemethode wurde aufgerufen, der Status (HTTP-Antwort) und die Header sind noch nicht verfügbar.
(3) INTERAKTIV
Interaktion Einige Daten wurden in diesem Zustand empfangen, um Teilergebnisse zu erhalten, da Status- und Antwortheader nicht vollständig verfügbar sind.
Es wurden einige Daten empfangen. Wenn Sie jedoch zu diesem Zeitpunkt die Eigenschaften „responseBody“ und „responseText“ aufrufen, um Teilergebnisse zu erhalten, tritt ein Fehler auf, da die Status- und Antwortheader noch nicht vollständig verfügbar sind.
(4) ABGESCHLOSSEN
Vollständig Alle Daten wurden empfangen und die vollständigen Daten sind in den Eigenschaften „responseBody“ und „responseText“ verfügbar.
Alle Daten wurden empfangen und die vollständigen Daten können in den Eigenschaften „responseBody“ und „responseText“ extrahiert werden.
Nach der Einführung der fünf Zustände von readyState in den oben genannten Büchern halte ich „Pragmatischer Ajax (dynamische Website-Statisierung) A Web 2.0 Primer“ für genauer, da darin die Analyse der empfangenen Daten erwähnt wird in anderen Büchern erwähnt, und dies ist der Grund, warum die Phase „(3) Interaktion“ als notwendiger Konvertierungsprozess zwischen „(2) Ladeabschluss“ und „(4) Abschluss“ existiert, das heißt, was ihre Aufgabe ist. Zusammenfassend denke ich, dass die ideale Erklärungsmethode darin bestehen sollte, diese Zustände im Ausdrucksmodus „Zustand: Aufgabe (Ziel) Prozessleistung (oder Merkmale)“ zu definieren, was genauer und einfacher zu verstehen ist. Die Zusammenfassung des aktuellen Tests lautet wie folgt:
ReadyState-StatusBeschreibung
(0) nicht initialisiert
In dieser Phase wird bestätigt, ob das XML-HttpRequest-Objekt (die Standardisierung rückt näher) erstellt wurde, und es wird durch Aufrufen der open()-Methode auf die Nichtinitialisierung vorbereitet. Ein Wert von 0 zeigt an, dass das Objekt bereits existiert, andernfalls meldet der Browser einen Fehler – das Objekt existiert nicht.
(1)Laden
In diesem Stadium wird das XML-HttpRequest-Objekt (die Standardisierung rückt näher) initialisiert, das heißt, die open()-Methode wird aufgerufen und der Objektstatus wird entsprechend den Parametern (Methode, URL, true) festgelegt. Und rufen Sie die Methode send() auf, um mit dem Senden von Anforderungen an den Server zu beginnen. Der Wert 1 gibt an, dass eine Anfrage an den Server gesendet wird.
(2) Laden abgeschlossen
Diese Phase empfängt die Antwortdaten vom Server. Es werden jedoch nur die Originaldaten der Serverantwort erhalten und können nicht direkt auf dem Client verwendet werden. Ein Wert von 2 gibt an, dass alle Antwortdaten empfangen wurden. Und bereiten Sie sich auf die nächste Stufe der Datenanalyse vor.
(3)Interaktion
In dieser Phase werden die empfangenen serverseitigen Antwortdaten analysiert. Das heißt, je nach MIME-Typ, der vom serverseitigen Antwortheader zurückgegeben wird, werden die Daten in ein Format konvertiert, auf das über die Attribute „responseBody“, „responseText“ oder „responsexml“ (die Standardisierung rückt näher) zugegriffen werden kann, und sind für den Aufruf bereit Kunde. Status 3 zeigt an, dass die Daten analysiert werden.
(4) Abgeschlossen
Zu diesem Zeitpunkt wird bestätigt, dass alle Daten in ein vom Client verwendbares Format geparst wurden und das Parsen abgeschlossen ist. Der Wert 4 zeigt an, dass die Datenanalyse abgeschlossen ist und die Daten über die entsprechenden Attribute des XML-HttpRequest-Objekts abgerufen werden können (Standardisierung rückt näher).
Zusammenfassend sollte der Lebenszyklus des gesamten XML-HttpRequest-Objekts (die Standardisierung rückt näher) die folgenden Phasen umfassen:
Erstellen – Anfrage initialisieren – Anfrage senden – Daten empfangen – Daten analysieren – abschließen
In bestimmten Anwendungen können Sie durch Klärung der Bedeutung der fünf Zustände von readyState (verschiedene Phasen des XML-Lebenszyklus (Standardisierung rückt näher) HttpRequest-Objekts) das Geheimnis des Ajax-Kerns (dynamische Website-Statisierung) beseitigen ) (Der Grund für die unklaren Wörter besteht entweder darin, die Dinge geheimnisvoll zu machen und ein Gefühl des Mysteriums zu erzeugen; oder darin, „Menschen ohnmächtig zu machen und sie bewusst zu machen“). Das schnelle Erfassen der Essenz ist äußerst hilfreich, um die Frustration beim Lernen zu reduzieren und die Selbstwahrnehmung zu verbessern. Vertrauen.
Zum Beispiel durch das folgende Beispiel:
//Code-Snippet innerhalb der Callback-Funktion
if (xml(Standardisierung rückt näher)Http.readyState==4)
{
var span = document.createElement("span");
span.innerHTML = states[xml(Standardisierung rückt näher)Http.readyState];
document.body.appendChild(span);
if (xml(Standardisierung rückt näher)Http.status == 200)
{
var xml (Standardisierung rückt näher) doc = xml (Standardisierung rückt näher) Http.responsexml (Standardisierung rückt näher);
//Andere Codes
}
xml (Standardisierung rückt näher)Http = null;
}else{
var span = document.createElement("span");
span.innerHTML = states[xml(Standardisierung rückt näher)Http.readyState];
document.body.appendChild(span);
}Die Ergebnisse sind wie folgt:
Anfrage wird gesendet...erfolgreich!
Daten werden empfangen... Fertig!
Daten werden analysiert... Fertig!