2009-03-11 10 views

Odpowiedz

167

Pełna lista readyState wartości jest:

State Description 
0  The request is not initialized 
1  The request has been set up 
2  The request has been sent 
3  The request is in process 
4  The request is complete 

(od https://www.w3schools.com/js/js_ajax_http_response.asp)

W praktyce prawie nigdy nie używać żadnego z nich oprócz 4.

Niektóre implementacje XMLHttpRequest może zobacz częściowo otrzymane odpowiedzi w responseText, gdy readyState==3, ale nie jest to ogólnie obsługiwane i nie powinno być rel ied na.

+68

Nie referencyjnej [w3fools] (http://w3fools.com /). Często są w błędzie. – MattBianco

+5

Błędy w transferze wciąż aktualizują readyState do 4. Jednakże, transfer całkowicie przerwany zresetuje readyState do 0. Tak więc błąd w transferze, który jest wynikiem przekierowania, nie jest tak naprawdę "błędem" i możesz zignorować logowanie/zgłaszanie błędu, jeśli parametr readyState of the xhr wynosi 0. Jest to trochę delikatne, a przebieg może się różnić w zależności od tego, czy rejestrowanie każdego zdarzenia/błędu jest "koniecznością", czy "miłym mieć". Jeśli jest to drugie, możesz pozwolić sobie na utratę rzadkiego zdarzenia, które może być błędem wraz z readyState z 0. –

+2

+1 do @MattBianco za jego poradę. Chciałbym również dodać, że Mozilla Developer Network [MDN] (https://developer.mozilla.org/) jest prawdopodobnie jedną z najbardziej popularnych i godnych zaufania stron referencyjnych dla wszystkich potrzeb JavaScript/HTML/CSS. Podczas wyszukiwania w Google, dodaj zapytanie do "mdn", a zaoszczędzisz sobie trochę bólu głowy. – DondeEstaMiCulo

21

Original definitive documentation

0, 1 i 2 tylko śledzić liczbę niezbędnych metod, aby złożyć zamówienie już nazywa się tak daleko.

3 mówi, że odpowiedź serwera zaczęła wchodzić. Ale gdy używasz obiektu XMLHttpRequest ze strony internetowej nie ma prawie nic (*) można zrobić z tych informacji, ponieważ nie ma dostępu do rozszerzonych właściwości, które umożliwiają odczytanie danych cząstkowych.

readyState 4 jest jedynym, który ma jakiekolwiek znaczenie.

(*: o jedynym możliwym użyciu, o jakim można pomyśleć przy sprawdzaniu readyState 3, jest to, że sygnalizuje pewną formę życia po stronie serwera, więc możesz zwiększyć czas oczekiwania na pełną odpowiedź, gdy otrzymasz go.)

30

kieron - odpowiedź zawiera w3schools ref. do którego nikt polegać, bobince „s odpowiedź daje odnośnik, który rzeczywiście mówi natywną realizację tzn

więc tutaj jest oryginalna dokumentacja cytowany aby właściwie zrozumieć co readyState oznacza:

Obiekt XMLHttpRequest może być w kilku stanach. Atrybut readyState musi zwrócić bieżący stan, który musi być jedną z następujących wartości:

NIEZAMANA (wartość numeryczna 0)
Obiekt został skonstruowany.

OPENED (numeryczna wartość 1)
Metoda Open() została pomyślnie wywołana. Podczas tego nagłówka żądania stanu można ustawić za pomocą metody setRequestHeader(), a żądanie można wykonać za pomocą metody send().

HEADERS_RECEIVED (wartość numeryczna 2)
Wykonano wszystkie przekierowania (jeśli istnieją) i otrzymano wszystkie nagłówki HTTP ostatecznej odpowiedzi. Obecnie dostępnych jest kilka elementów odpowiedzi obiektu.

ŁADOWANIE (wartość numeryczna 3)
Jednostka treści odpowiedzi jest odbierana.

ZROBIONE (wartość numeryczna 4)
Przesyłanie danych zostało zakończone lub coś poszło nie tak podczas przesyłania (np. Nieskończone przekierowania).

Proszę przeczytać tutaj: W3C Explaination Of ReadyState

+5

+1 za odniesienie do W3C. –

+0

@ CharlesWood, wyzwaniem dla mnie był tutaj edytor przeciążenia stackoverflow nie zaakceptuje, odnoszą się do w3c .. sprawdź więc stawiam krótki URL z goo.gl .... nie rozumiem, dlaczego nie pozwoli mi to bezpośrednio W3C url ... –

+0

Huh, właśnie wypróbowałem to w [sandbox] (http://meta.stackexchange.com/questions/3122/formatting-sandbox/) i wydawało się, że działa. –

1

onReadyStateChange Sklepy funkcję (lub nazwa funkcji) należy każdorazowo właściwość readyState zmienia readyState Przechowuje stan XMLHttpRequest automatycznie. Zmienia się od 0 do 4:

0: żądanie nie inicjowane

1: Połączenie serwera ustalone

2: żądanie odebrane

3: przetwarzanie żądania

4: żądania zakończone i odpowiedź jest gotowy

status 200: "OK"

404: Nie znaleziono strony

0
  • 0: UNSENT Klient został utworzony. open() jeszcze nie wywołane.
  • 1: OPENED open() został wywołany.
  • 2: Wywołano funkcję HEADERS_RECEIVED send(), a nagłówki i status są dostępne.
  • 3: ŁADOWANIE Pobieranie; responseText zawiera częściowe dane.
  • 4: DONE Operacja została zakończona.

(Od https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState)