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.


Автор: Eliza Bing (не зарегистрирован), дата: 3 октября, 2024 - 15:42
#permalink

The objective is to arrange characters and events in a way that fits the narrative goals of each level. The game promotes creative problem-solving, with multiple ways to solve the puzzles. In storyteller players are free to experiment with different storytelling paths, crafting unique stories as they progress. The game’s puzzles increase in complexity, providing a fun and rewarding experience for players who enjoy both creative storytelling and challenging puzzles.


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

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
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
Антиспам
2 + 18 =
Введите результат. Например, для 1+3, введите 4.
 
Текущий раздел
Поиск по сайту
Содержание

Учебник javascript

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

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

Интерфейсы

Все об AJAX

Оптимизация

Разное

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

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