Почему мой Ajax-запрос переходит непосредственно из состояния 1 в состояние 4?

StackOverflow https://stackoverflow.com/questions/406476

  •  03-07-2019
  •  | 
  •  

Вопрос

Я делаю запрос к CGI-программе, используя AJAX.В ответе мне высылается длина содержимого.Моя цель - динамически отображать прогресс ответа.Для этого мне нужно запустить функцию для значения onreadystate объекта XHR, равного 3.Но запрос, похоже, не приобретает этот номер статуса.Вместо этого он переходит непосредственно из состояния 1 в состояние 4.Что я упускаю из виду?

Это было полезно?

Решение

Ответ может быть получен так быстро, что вы просто не заметите его в состоянии 3.Особенно, если вы запускаете его на localhost, ответ может быть передан очень быстро.Вы могли бы попробовать установить оповещение, когда оно перейдет к этапу 3, чтобы проверить, действительно ли оно достигает цели.Кроме того, я полагаю, что Internet Explorer говорит, что доступ к ответу на этапе 3 является ошибкой, поэтому могут возникнуть проблемы с совместимостью.

Другие советы

Если вы работаете на localhost, то, вероятно, браузер никогда не получит возможности запуститься в промежуток времени между отправкой запроса и получением ответа...

  1. браузер открывает соединение, устанавливает readyState равным 1
  2. браузер отправляет пакет серверному процессу
  3. серверный процесс получает пакет, получает приоритет от планировщика
  4. сервер возвращает данные в браузер и предоставляет управление процессором.Браузер продолжает выполнение.
  5. браузер видит, что все данные получены, и устанавливает readyState равным 4.

Короче говоря, долгая история:не рассчитывайте на переход в состояние "приема".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top