Что означают разные readstates в XMLHttpRequest и как я могу их использовать?

XMLHttpRequest имеет 5 readyState s, и я использую только 1 из них (последний, 4).

Для чего нужны другие и какие практические приложения я могу использовать в них?

Ответ 1

Полный список значений readyState:

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

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

На практике вы почти никогда не используете ни одного из них, кроме 4.

Некоторые реализации XMLHttpRequest могут видеть частично полученные ответы в responseText, когда readyState==3, но это не поддерживается повсеместно и не следует полагаться.

Ответ 2

kieron содержит w3schools ref. которой никто не полагается, bobince дает ссылку, которая на самом деле говорит о собственной реализации IE,

так вот оригинальная документация, приведенная для правильного понимания того, что представляет собой readystate:

Объект XMLHttpRequest может находиться в нескольких состояниях. Атрибут readyState должен возвращать текущее состояние, которое должно быть одним из следующих значений:

UNSENT (числовое значение 0)
   Объект был создан.

ОТКРЫТО (числовое значение 1)
   Метод open() успешно активирован. Во время этого состояния заголовки запросов могут быть установлены с помощью setRequestHeader(), и запрос может быть выполнен с помощью метода send().

HEADERS_RECEIVED (числовое значение 2)
   Все переадресации (если они есть) были выполнены, и все HTTP-заголовки окончательного ответа были получены. Теперь доступно несколько элементов ответа объекта.

ЗАГРУЗКА (числовое значение 3)
   Тело объекта ответа принимается.

СОВЕРШЕННО (числовое значение 4)
   Передача данных завершена или что-то пошло не так во время передачи (например, бесконечные перенаправления).

Пожалуйста, прочтите здесь: W3C Объяснение ReadyState

Ответ 3

Оригинальная окончательная документация

0, 1 и 2 отслеживать только то, сколько из необходимых способов сделать запрос, который вы вызывали до сих пор.

3 сообщает вам, что серверный ответ начал заходить. Но когда вы используете объект XMLHttpRequest с веб-страницы, почти ничего (*) вы не можете сделать с этой информацией, t имеют доступ к расширенным свойствам, которые позволяют вам читать частичные данные.

readyState 4 является единственным, который имеет любой смысл.

(*: о единственном мыслимом использовании, которое я могу придумать для проверки для readyState 3, является то, что он сигнализирует о какой-то форме жизни на сервере, поэтому вы можете увеличить время ожидания полного ответа когда вы его получите.)

Ответ 4

onreadystatechange Сохраняет функцию (или имя функции), которая будет вызываться автоматически каждый раз при изменении свойства readyState readyState Удерживает статус XMLHttpRequest. Изменения от 0 до 4:

0: запрос не инициализирован

1: установлено подключение к серверу

2: полученный запрос

3: запрос на обработку

4: запрос завершен, и ответ готов

статус 200: "ОК"

404: Страница не найдена