Javascript.RU

XMLHTTPRequest, состояние interactive

Официально у объекта 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
  }
  ...
}
  • минимальная задержка и трафик
  • нет индикации загрузки
  • данные нельзя сжимать
  • проблемы с кросс-браузерностью, надежностью.

Автор: Гость (не зарегистрирован), дата: 13 июля, 2008 - 22:31
#permalink

ИЕ ваще не поддерживает, данные можно прочитать только когда readyState = 4


Автор: Гость (не зарегистрирован), дата: 13 августа, 2008 - 13:59
#permalink

Опера 9.50 ведет здясь себя также как ИЕ
Проблему пока никто не решил.


Автор: Гость (не зарегистрирован), дата: 22 декабря, 2008 - 03:27
#permalink

херово...


Автор: Гость (не зарегистрирован), дата: 22 декабря, 2008 - 03:32
#permalink

в Опере 9.62 работает


Автор: DMH, дата: 15 июля, 2010 - 15:39
#permalink

В Opera и FireFox работет, в Chrome, Safari, IE и т.д. - нет.


Автор: Ostrovski (не зарегистрирован), дата: 14 сентября, 2011 - 21:51
#permalink

В хроме уже работает!


Автор: Гость (не зарегистрирован), дата: 17 февраля, 2011 - 12:07
#permalink

Несколько лет назад реализовывал подобную конструкцию. На readyState не полагался - просто по таймеру с небольшим интервалом проверял не появилось ли чего-нибудь нового. Для IE6 (7ого тогда еще не было) читал не responseText, а responseXML.xml и все прекрасно работало.


Автор: Гостъ Дмитрий (не зарегистрирован), дата: 16 сентября, 2011 - 10:36
#permalink

Для Chrome и Safari надо ContentType установить "application/json" тогда работает!
Для IE от версии 8 испольуйте XDomainRequest вместо new ActiveXObject('MSXML2.XMLHTTP'), но этот класс работает несколько иначе, чем XmlHTTPRequest.
Для IE ниже 8 только iframe с периодическим опросом!
Вот не нашел еще красивого способа для Оперы.


Автор: Гость (не зарегистрирован), дата: 10 ноября, 2011 - 16:19
#permalink

А у меня на обарот в Opera не фурычит... загрузил последнию, заработала...
все что в IE пишу, в Opera идет на ура... в Мозилке не фурычит...


Автор: exd2 (не зарегистрирован), дата: 16 мая, 2013 - 13:11
#permalink

все хорошо, но...

5 var message = req.responseText.substr(last_char)
6 last_char = req.responseText.length

req.responseText будет содержать весь накопленный ответ сервера, по мере его поступления, и в процессе работы может иметь приличный размер.

никто не вкурсе как бы его (req.responseText) очищать в процессе,
а то перспиктива его роста вообще не радует.


Автор: activiststernway (не зарегистрирован), дата: 8 февраля, 2023 - 06:30
#permalink

Чтобы он работал в Chrome и Safari, вы должны изменить Content Type на «application/json». После этого попробуйте!
Используйте XDomain tunnel rush Request вместо нового, начиная с версии 8 Internet Explorer.


Автор: voltag (не зарегистрирован), дата: 28 января, 2014 - 17:51
#permalink


никто не вкурсе как бы его (req.responseText) очищать в процессе,
а то перспиктива его роста вообще не радует.

Не пользовался этим методом, но предположу что надо будет обновить запрос, к примеру после 10 ответов от сервера. Т.е надо будет закрыть и пересоздать АЯКС соединение.
Протролю наверно, я бы сперва попробовал

...
  req.responseText = '';
...

хотя возможно свойство только readonly


Автор: selenakale (не зарегистрирован), дата: 13 апреля, 2021 - 07:00
#permalink

It's necessary, I need more information driving directions


Автор: daisygosia (не зарегистрирован), дата: 6 мая, 2021 - 09:57
#permalink

Useful information for my work word finder


Автор: Гость (не зарегистрирован), дата: 16 апреля, 2022 - 02:07
#permalink

Автор: Giulia Terranova (не зарегистрирован), дата: 27 апреля, 2022 - 20:38
#permalink

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.


Автор: chanvova (не зарегистрирован), дата: 11 ноября, 2022 - 09:56
#permalink

wohh, lewdle and dordle is really top notch. It's really funny


Автор: 온라인카지노 (не зарегистрирован), дата: 14 марта, 2023 - 11:15
#permalink

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? 온라인카지노


Автор: clamb (не зарегистрирован), дата: 12 июля, 2023 - 10:26
#permalink

The travel places you shared are very good and very useful to me run 3, I will often visit your articles to gain more knowledge.


Автор: 토토사이트 (не зарегистрирован), дата: 20 сентября, 2023 - 06:26
#permalink

I am continually looking online for articles that can facilitate me. Thank you! 토토사이트


Автор: https://therowdylender.com/ (не зарегистрирован), дата: 20 сентября, 2023 - 06:26
#permalink

I stumbled on this while browsing on google I’ll be sure to come back. thanks for sharing. https://therowdylender.com/


Автор: 메이저사이트 (не зарегистрирован), дата: 20 сентября, 2023 - 06:26
#permalink

What’s up colleagues, its enormous post regarding educationand entirely defined, keep it up all the time. 메이저사이트


Автор: 먹튀검증 (не зарегистрирован), дата: 20 сентября, 2023 - 06:27
#permalink

F*ckin¦ Have you ever thought about including a little bit more than just your articles? 먹튀검증


Автор: 메이저놀이터전문 (не зарегистрирован), дата: 4 октября, 2023 - 09:00
#permalink

Oh my goodness! an incredible article dude. Thanks Nonetheless I am experiencing subject with ur rss .


Автор: Nanasi12 (не зарегистрирован), дата: 27 февраля, 2024 - 06:21
#permalink

dino game is also called Google Dinosaur Game, dinosaur game, T-Rex Game, Chrome Dino, No Internet Game, and Dino Dun. The online game is free to play on a computer, a cell phone, or a tablet.


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
6 + 2 =
Введите результат. Например, для 1+3, введите 4.
 
Текущий раздел
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum