XMLHttpRequest() и несколько запросов
От: burunduk  
Дата: 05.04.07 10:50
Оценка:
Отправляю несколько запросов подряд с регистрацией callback-функции. Ответ к сожалению приходит только от последнего запроса

requestObj = new XMLHttpRequest();
requestObj.onreadystatechange = responseServer;
requestObj.open('POST',url,true);
requestObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
requestObj.send(data);


Когда делаю паузы после посылки, вставляя alert'ы, то всё нормально работает. Но хочется послать пачку запросов и ожидать от них всех ответы. Как такое сделать ?
Re: XMLHttpRequest() и несколько запросов
От: DarkRebel  
Дата: 05.04.07 11:13
Оценка:
Здравствуйте, burunduk, Вы писали:

B>Отправляю несколько запросов подряд с регистрацией callback-функции. Ответ к сожалению приходит только от последнего запроса


B> requestObj = new XMLHttpRequest();

B> requestObj.onreadystatechange = responseServer;
B> requestObj.open('POST',url,true);
B> requestObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
B> requestObj.send(data);


B>Когда делаю паузы после посылки, вставляя alert'ы, то всё нормально работает. Но хочется послать пачку запросов и ожидать от них всех ответы. Как такое сделать ?


скорее всего при создании следующего запроса объект requestObj просто-напросто уничтожается ) поэтому только от последнего и приходит значение, поэтому и паузы помогают
делайте requestObj локальной переменной. Самое простое — вынести это дело в отдельную функцию и использовать var:
var requestObj = new XMLHttpRequest();
Re[2]: XMLHttpRequest() и несколько запросов
От: burunduk  
Дата: 05.04.07 12:54
Оценка:
спасибо, действительно похоже что в этом причина...
теперь мне не ясно как же идентифицировать нужный объект requestObj в callback-функции, заводить массив ?


function responseServer() {
if (requestObj.readyState == 4) {
// alert('resp');
var status = requestObj.status;
if (status == 200) {



DR>скорее всего при создании следующего запроса объект requestObj просто-напросто уничтожается ) поэтому только от последнего и приходит значение, поэтому и паузы помогают

DR>делайте requestObj локальной переменной. Самое простое — вынести это дело в отдельную функцию и использовать var:
DR>var requestObj = new XMLHttpRequest();
Re[3]: XMLHttpRequest() и несколько запросов
От: DarkRebel  
Дата: 05.04.07 13:42
Оценка:
B>теперь мне не ясно как же идентифицировать нужный объект requestObj в callback-функции, заводить массив ?

попробуйте так:

requestObj.onreadystatechange = function () {
    responseServer(this);
}
Re: XMLHttpRequest() и несколько запросов
От: Дм.Григорьев  
Дата: 05.04.07 21:50
Оценка: 3 (1)
Здравствуйте, burunduk,

[SRC] AJAX.JS — удобный, кроссбраузерный.
Автор: Дм.Григорьев
Дата: 19.12.06
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
P.S.
От: Дм.Григорьев  
Дата: 05.04.07 21:54
Оценка:
Я там напарился, пока отлаживал. Пару строчек подготовки HTTP-запроса в методе request() местами поменяешь — отваливается Opera, другую пару строк где-то еще поменяешь — отваливается Firefox. Короче говоря, тот факт, что все это работает под всеми браузерами, можно рассматривать как чудо.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.