Я разрабатывал, используя вызов Ajax, и во время отладки я обнаружил, что Ajax отправляет запрос / ответ столько раз, сколько я на самом деле представлял.
Давным-давно я получил хороший документ, описывающий, что происходит за сценой, но япотерял это.
В настоящее время в учебниках по Ajax в Интернете рассказывается только о том, как кодировать, и эти операторы IF проверяют только readystate == 4
и status == 200
, что не дает хорошего объяснения для кого-то вроде меня.
Я тестировалпоток с кодом ниже и выводом я считаю странным.Моя путаница заключается в том, почему готовое состояние 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');
}
}