Браузер Firefox 3.0.10. Я запрашиваю страницу, используя Ajax. Ответ в процессе может быть в ReadyState менее 4. Тем временем я пытаюсь перезагрузить страницу. Запрос заканчивается, давая пустой ответ.
Я использовал оповещение, чтобы найти строку, которая была задана в качестве текста ответа. Я предполагаю, что к этому времени состояние готовности 4 достигнуто. Почему это пустая строка?
Когда я оповещаю xmlhttpobject.status, он отображает 0.
Когда я предупреждаю xmlhttpobject.statusText об исключении, появляется сообщение «НЕДОСТУПНО».
Когда я читаю в документе http://www.devx.com/webdev/Article/33024/0/page/2, он говорит, что доступны 3 и 4 status
и statusText
, но при тестировании доступен только статус, но не satausText.
Вот пример кода.
Считайте, что я запросил страницу, и моя функция обратного вызова выглядит следующим образом
function cb(rt)
{
if(rt.readyState==4)
{
alert(rt.status);
alert(rt.statusText); // which throws an exception
}
}
и мой серверный скрипт выглядит следующим образом
sleep(30);
//flushing little drop down code
Помимо этого, я заметил следующее.
Предположим снова, что я запрашиваю приведенный выше скрипт, используя Ajax.
Теперь будет простоя 30 секунд.
Перед этим 30 секунд я нажимаю обновить.
Я получил xmlhttpobject.status as, 0, но браузер все еще не перезагружал страницу в течение этих 30 секунд. Почему?
Когда я обновляю страницу до завершения Ajax-запроса, значение состояния устанавливается равным нулю, а состояние готовности устанавливается равным 4, но страница все еще ожидает ответа от сервера до конца.
Что происходит?
ПРИЧИНА ДЛЯ МЕНЯ, ЧТОБЫ ВИДЕТЬ НЕКОТОРОЕ, КАК ЭТО ТАК КАК СЛЕДУЕТ.
Всякий раз, когда я делаю Ajax-запрос, если процесс завершается успешно, например, вставкой чего-либо или удалением чего-либо, я выскакиваю div, сообщающий, что он успешно обновился, и я перезагружаю страницу. Но если возникает какая-либо ошибка, я не перезагружаю страницу, а просто предупреждаю, что не смог обработать этот запрос.
Если пользователь перезагружает страницу до того, как какой-либо из этих запросов будет выполнен, я получаю пустой ответ, который в моих вычислениях указывает на ошибку сервера. Поэтому я отлаживал ответ Ajax, чтобы отфильтровать, что соединение было прервано, потому что пользователь нажал перезагрузить. Поэтому на этот раз я не хочу отображать «невозможно обработать этот запрос», когда пользователь перезагружает страницу до того, как запрос будет завершен.
О ... длинная история. ЭТО ДЛИННОЕ ОПИСАНИЕ, ЧТО Я МОГУ СДЕЛАТЬ ЭКСПЕРТАМИ, ПОНИМАТЬ МОЕ СОМНЕНИЕ.
Итак, что я хочу из вышеперечисленного.
Любой тип ответа очистит мой разум. Или я хотел бы сказать все типы ответов.
РЕДАКТИРОВАТЬ: 19 дек.
Если я не получу правильного ответа, я удалю этот вопрос и перепишу с примерами. Остальное я приму после экспериментов.
Я создам демонстрационную программу и опубликую ссылку здесь, чтобы я мог понять, с чем я столкнулся. Сегодня 29 декабря 2010 года.