Официально у объекта XMLHTTPRequest есть состояние readyState=3, interactive, при котором ответ находится в процессе загрузки, и уже полученная часть может быть прочитана в responseText.
В ряде браузеров это действительно работает, и состояние interactive можно использовать для передачи сообщений с сервера.
Кнопка ниже запускает XMLHTTPRequest, на который сервер отвечает по 1 цифре в секунду.
Возможно, результат будет выводится большими блоками по много сообщений сразу - дальше мы обсудим, почему.
Тут будут сообщения
На самом деле readyState браузеры поддерживают всяк в свою степь, и результаты могут быть различные. На момент написания, "как надо" работало только в Firefox, более-менее работало в Opera/Safari, в IE 6-7 не работает вообще.
Можно использовать состояние interactive для server push: каждое событие interactive знаменует приход новой порции данных.
Тут будут сообщения
(Если Вы нажали на обе кнопки, то сообщения обоих запросов будут вываливаться в один div)
Функция обработки будет такой:
var last_char = 0
req.onreadystatechange = function() {
if (req.readyState == 3) {
// выцепить из ответа сервера следующий кусок
var message = req.responseText.substr(last_char)
last_char = req.responseText.length
}
...
}
Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
ИЕ ваще не поддерживает, данные можно прочитать только когда readyState = 4
Опера 9.50 ведет здясь себя также как ИЕ
Проблему пока никто не решил.
херово...
в Опере 9.62 работает
Отправить комментарий
Приветствуются комментарии:- Полезные.
- Дополняющие прочитанное.
- Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.Для остальных вопросов и обсуждений есть форум.