2009-03-03 4 views
3

Ich habe einen Haltepunkt in Firebug gesetzt und untersuche mein Xhr-Objekt. Sein readyState ist 0, sein Status ist 200. Mein Verständnis ist, dass, wenn der Status 200 ist, die Anfrage mindestens gestartet sein sollte, und der Bereitschaftszustand sollte mindestens 1 sein. Kann jemand erklären, was vor sich geht?verwirrt - meine XMLHttpRequest hat readyState von 0 und Status von 200

Ich benutze jquery's $ .ajax, um das xhr-Objekt zu erstellen, aber ich würde nicht denken, dass das den readystate und den Status der xhr beeinflussen würde.

Dank,

-Morgan

+0

Gibt das xhr-Objekt irgendwelche Daten zurück? – rogeriopvl

Antwort

3

Die Anforderung ist beendet, wenn Readystate 4 ist, nicht, wenn der Status 200.

+1

Status 200 kann passieren, bevor Sie sinnvolle Daten zurückbekommen: Es ist nur eine Kopfzeile. –

+0

Aber macht es Sinn, wenn readystate in diesem Fall 0 ist? – morgancodes

+0

morgancodes: Wenn Sie den Haltepunkt zu früh setzen, ja. –

4

der W3C defines dass readyState ist eine progressive Anzeige des Fortschritts der ist xmlhttprequest. Es geht in der Reihenfolge von 0-> 4 (nicht initialisiert, geöffnet, gesendet, empfangen, geladen) und nur bei geladen ist der Inhalt zum Lesen bereit. Dies ist der Punkt der Eigenschaft und der Grund, warum Sie das Ereignis onreadystatechange überwachen und nicht den Status, der ein Antwort-Header ist.

Mit der gleichen Spezifikation status soll eine Ausnahme auslösen, wenn nicht verfügbar (bei Erhalt oder geladen), aber ich stelle mir vor, dies wird von der Implementierung für die Benutzerfreundlichkeit missachtet.

+0

"bei Empfang oder geladen"? Der Status sollte nur bei 'loaded' verfügbar sein. –

+0

Aus der Spezifikation: "Es muss verfügbar sein, wenn readyState 3 (Empfangen) oder 4 (Loaded) ist." – annakata

Verwandte Themen