Официально у объекта 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
}
...
}
Несколько лет назад реализовывал подобную конструкцию. На readyState не полагался - просто по таймеру с небольшим интервалом проверял не появилось ли чего-нибудь нового. Для IE6 (7ого тогда еще не было) читал не responseText, а responseXML.xml и все прекрасно работало.
Для Chrome и Safari надо ContentType установить "application/json" тогда работает!
Для IE от версии 8 испольуйте XDomainRequest вместо new ActiveXObject('MSXML2.XMLHTTP'), но этот класс работает несколько иначе, чем XmlHTTPRequest.
Для IE ниже 8 только iframe с периодическим опросом!
Вот не нашел еще красивого способа для Оперы.
Чтобы он работал в Chrome и Safari, вы должны изменить Content Type на «application/json». После этого попробуйте!
Используйте XDomain tunnel rush Request вместо нового, начиная с версии 8 Internet Explorer.
никто не вкурсе как бы его (req.responseText) очищать в процессе,
а то перспиктива его роста вообще не радует.
Не пользовался этим методом, но предположу что надо будет обновить запрос, к примеру после 10 ответов от сервера. Т.е надо будет закрыть и пересоздать АЯКС соединение.
Протролю наверно, я бы сперва попробовал
Donne cerca uomi to aplikacja randkowa, którą polecam. Jeśli niewiele wiesz o danej osobie, nawiązanie pierwszego kontaktu może być dużym wyzwaniem. Musisz przesiać morze profili, co sprawia, że łatwo jest pominąć osoby, którym być może dałbyś szansę w innych okolicznościach.
While looking for articles on these topics, I came across this article on the site here. As I read your article, I felt like an expert in this field. I have several articles on these topics posted on my site. Could you please visit my homepage? 온라인카지노
Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены. Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
ИЕ ваще не поддерживает, данные можно прочитать только когда readyState = 4
Опера 9.50 ведет здясь себя также как ИЕ
Проблему пока никто не решил.
херово...
в Опере 9.62 работает
В Opera и FireFox работет, в Chrome, Safari, IE и т.д. - нет.
В хроме уже работает!
Несколько лет назад реализовывал подобную конструкцию. На readyState не полагался - просто по таймеру с небольшим интервалом проверял не появилось ли чего-нибудь нового. Для IE6 (7ого тогда еще не было) читал не responseText, а responseXML.xml и все прекрасно работало.
Для Chrome и Safari надо ContentType установить "application/json" тогда работает!
Для IE от версии 8 испольуйте XDomainRequest вместо new ActiveXObject('MSXML2.XMLHTTP'), но этот класс работает несколько иначе, чем XmlHTTPRequest.
Для IE ниже 8 только iframe с периодическим опросом!
Вот не нашел еще красивого способа для Оперы.
А у меня на обарот в Opera не фурычит... загрузил последнию, заработала...
все что в IE пишу, в Opera идет на ура... в Мозилке не фурычит...
все хорошо, но...
5 var message = req.responseText.substr(last_char)
6 last_char = req.responseText.length
req.responseText будет содержать весь накопленный ответ сервера, по мере его поступления, и в процессе работы может иметь приличный размер.
никто не вкурсе как бы его (req.responseText) очищать в процессе,
а то перспиктива его роста вообще не радует.
Чтобы он работал в Chrome и Safari, вы должны изменить Content Type на «application/json». После этого попробуйте!
Используйте XDomain tunnel rush Request вместо нового, начиная с версии 8 Internet Explorer.
никто не вкурсе как бы его (req.responseText) очищать в процессе,
а то перспиктива его роста вообще не радует.
Не пользовался этим методом, но предположу что надо будет обновить запрос, к примеру после 10 ответов от сервера. Т.е надо будет закрыть и пересоздать АЯКС соединение.
Протролю наверно, я бы сперва попробовал
хотя возможно свойство только readonly
It's necessary, I need more information driving directions
Useful information for my work word finder
Roksa pl myslenice
Donne cerca uomi to aplikacja randkowa, którą polecam. Jeśli niewiele wiesz o danej osobie, nawiązanie pierwszego kontaktu może być dużym wyzwaniem. Musisz przesiać morze profili, co sprawia, że łatwo jest pominąć osoby, którym być może dałbyś szansę w innych okolicznościach.
wohh, lewdle and dordle is really top notch. It's really funny
While looking for articles on these topics, I came across this article on the site here. As I read your article, I felt like an expert in this field. I have several articles on these topics posted on my site. Could you please visit my homepage? 온라인카지노
Отправить комментарий
Приветствуются комментарии:Для остальных вопросов и обсуждений есть форум.