Ajax Call - Готовный государственный поток путаница
-
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
?