Ajax Call - Готовный государственный поток путаница

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

  •  10-10-2019
  •  | 
  •  

Вопрос

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

Давным -давно у меня был хороший документ, описывающий, что происходит за сценой, но я потерял его.

В настоящее время учебные пособия Ajax в Интернете только рассказывают о том, как кодировать, и о том, что оператор только проверяет readystate == 4 а также status == 200 Что не дает хорошего объяснения для кого -то вроде меня.

Я проверил поток с кодом ниже, и я думаю, что я думаю. Моя путаница в том, почему штат Ready 4 появляется дважды? Согласно определению, Готово 4 означает завершенный Значит, не должно быть причин для выполнения дважды?

ВЫХОД

START
ready 1                //loading
START
ready 2                //loaded
ready 2 status=200     //loaded
START
ready 3                //interactive
ready 3 status=200     //interactive
START
ready 4                //complete
START
ready 4                //complete   ... again???

Тестовый код фрагмент

xmlHttp.onreadystatechange = function() {

                alert("START");

                if(xmlHttp.readyState == 0) {
                    alert('ready 0');
                    alert('ready 0 status=' + xmlHttp.status);
                }

                if(xmlHttp.readyState == 1) {
                    alert('ready 1');
                    alert('ready 1 status=' + xmlHttp.status);
                }

                if(xmlHttp.readyState == 2) {
                    alert('ready 2');
                    alert('ready 2 status=' + xmlHttp.status);
                }

                if(xmlHttp.readyState == 3) {
                    alert('ready 3');
                    alert('ready 3 status=' + xmlHttp.status);
                }

                if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                    alert('ready 4');
                } 
   }                 
Это было полезно?

Решение

Вы можете читать в Quirksmode О том, как ведут себя разные браузеры с Ajax Calls и Readystate.

я нашел это ссылка, которая претендует на использование Abort Команда выпустит readystate 4 (не протестировал его) - вы используете Abort?

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