2009-03-03 6 views
3

J'ai défini un point d'arrêt dans firebug et j'examine mon objet xhr. Son état readyState est 0, son statut est 200. Ma compréhension est que si le statut est 200, la requête devrait avoir au moins commencé, et le readset devrait être au moins 1. Quelqu'un peut-il expliquer ce qui se passe? J'utilise $ .ajax de jquery pour créer l'objet xhr, mais je ne pense pas que cela affecterait le readystate et l'état du xhr.confused - mon XMLHttpRequest a readyState de 0 et le statut de 200

grâce,

-Morgan

+0

l'objet xhr renvoie-t-il des données? – rogeriopvl

Répondre

3

La demande est complète lorsque readyState est 4, pas lorsque l'état est 200.

+1

Le statut 200 peut apparaître avant que vous obteniez des données significatives: c'est juste un en-tête. –

+0

Mais est-il logique que readystate soit 0 dans ce cas? – morgancodes

+0

morgancodes: si vous définissez le point d'arrêt trop tôt, oui. –

4

Le w3c defines que readyState est une indication progressive des progrès de la xmlhttprequest. Il transite dans l'ordre de 0 à> 4 (non initialisé, ouvert, envoyé, reçu, chargé) et seulement au chargement est le contenu prêt à lire. C'est le point de la propriété et la raison pour laquelle vous surveillez l'événement onreadystatechange et non l'état qui est un en-tête de réponse.

Par la même spécification status est censé lever une exception quand il n'est pas disponible (à réception ou chargé) mais j'imagine que cela est bafoué par l'implémentation pour la facilité d'utilisation.

+0

"à réception ou chargé"? Le statut ne devrait être disponible que sur «loaded». –

+0

De la spécification: "Il DOIT être disponible lorsque readyState est 3 (réception) ou 4 (chargé)." – annakata

Questions connexes