Почему мой запрос Ajax переходит напрямую из состояния 1 в 4? - PullRequest
0 голосов
/ 02 января 2009

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

Ответы [ 2 ]

0 голосов
/ 03 января 2009

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

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

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

0 голосов
/ 02 января 2009

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

...