XMLHttpRequest
имеет 5 readyState
s, и я использую только 1 из них (последний, 4
).
Для чего нужны другие и какие практические приложения я могу использовать в них?
XMLHttpRequest
имеет 5 readyState
s, и я использую только 1 из них (последний, 4
).
Для чего нужны другие и какие практические приложения я могу использовать в них?
Полный список значений 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
, но это не поддерживается повсеместно и не следует полагаться.
kieron содержит w3schools ref. которой никто не полагается, bobince дает ссылку, которая на самом деле говорит о собственной реализации IE,
так вот оригинальная документация, приведенная для правильного понимания того, что представляет собой readystate:
Объект XMLHttpRequest может находиться в нескольких состояниях. Атрибут readyState должен возвращать текущее состояние, которое должно быть одним из следующих значений:
UNSENT (числовое значение 0)
Объект был создан.ОТКРЫТО (числовое значение 1)
Метод open() успешно активирован. Во время этого состояния заголовки запросов могут быть установлены с помощью setRequestHeader(), и запрос может быть выполнен с помощью метода send().HEADERS_RECEIVED (числовое значение 2)
Все переадресации (если они есть) были выполнены, и все HTTP-заголовки окончательного ответа были получены. Теперь доступно несколько элементов ответа объекта.ЗАГРУЗКА (числовое значение 3)
Тело объекта ответа принимается.СОВЕРШЕННО (числовое значение 4)
Передача данных завершена или что-то пошло не так во время передачи (например, бесконечные перенаправления).
Пожалуйста, прочтите здесь: W3C Объяснение ReadyState
Оригинальная окончательная документация
0
, 1
и 2
отслеживать только то, сколько из необходимых способов сделать запрос, который вы вызывали до сих пор.
3
сообщает вам, что серверный ответ начал заходить. Но когда вы используете объект XMLHttpRequest
с веб-страницы, почти ничего (*) вы не можете сделать с этой информацией, t имеют доступ к расширенным свойствам, которые позволяют вам читать частичные данные.
readyState 4
является единственным, который имеет любой смысл.
(*: о единственном мыслимом использовании, которое я могу придумать для проверки для readyState 3
, является то, что он сигнализирует о какой-то форме жизни на сервере, поэтому вы можете увеличить время ожидания полного ответа когда вы его получите.)
onreadystatechange Сохраняет функцию (или имя функции), которая будет вызываться автоматически каждый раз при изменении свойства readyState readyState Удерживает статус XMLHttpRequest. Изменения от 0 до 4:
0: запрос не инициализирован
1: установлено подключение к серверу
2: полученный запрос
3: запрос на обработку
4: запрос завершен, и ответ готов
статус 200: "ОК"
404: Страница не найдена