Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Два независимых AJAX-клиента, что-то они у меня вместе не живут 
V
    Опции темы
Rigel
Дата 18.2.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 24.7.2007
Где: Москва

Репутация: нет
Всего: нет



Мне нужно на некоторых страницах сайта запускать еще один процесс (первый процесс есть и работает), и я сполкнулся с тем, что не понимаю, как разделить onreadystatechange - то есть, если я создаю только один экземпляр ActiveXObject, он, вроде и ошибки не выдает, и результата не видно, а если пытаюсь создать второй объект, то делаю что-то не так, наверное -  все просто останавливается при попытке обратиться к этому, второму, экземпляру. Я делаю так:
Код

//var fid;
/*@cc_on @*/
/*@if (@_jscript_version >= 5) try {
    xmlContList = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) { try {
    xmlContList = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e2) {
        xmlContList = false;
    }
}
@end @*/

if (!xmlContList && typeof XMLHttpRequest != 'undefined') {
    xmlContList = new XMLHttpRequest();
}

/*@cc_on @*/
/*@if (@_jscript_version >= 5) try {
    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) { try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e2) {
        xmlHttp = false;
    }
}
@end @*/

if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
    xmlHttp = new XMLHttpRequest();
}



Может быть, всезнающий ALL подскажет, как правильно подключить AJAX к двум разным серверным процессам?

Полностью оба варианта лежат на http://www.smoliy.ru/tmp/1/ajax.zip
--------------------
С уважением. Rigel. http://www.smoliy.ru
PM MAIL WWW ICQ   Вверх
ksnk
Дата 18.2.2009, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Хм... дык ежели нужно 2 независимых ajax'а то и нужно их делать 2, а не пытаться из уместить в единственном xmlHttp.

Упихать всё создание xmlHttp в функцию 
Код

function getHttp(...){var xmlHttp; ... return xmlHttp; }
...




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Rigel
Дата 18.2.2009, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 24.7.2007
Где: Москва

Репутация: нет
Всего: нет



А можно пример? Дело в том, что у меня, например, не передавались параметры при таком вызове: readumess = setTimeout('check_contact()', tout); - а от мне нужен, потому что нужно запрашивать изменения каждые несколько секунд. С глобальным объектом все работает, а как сделать с локальным?
--------------------
С уважением. Rigel. http://www.smoliy.ru
PM MAIL WWW ICQ   Вверх
ksnk
Дата 18.2.2009, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Код

function session_start(){
    var chaturl = "/cgi/chat?id=" + toid + "&m=start";
alert(chaturl);
    var xmlHttp=getHttp();   // <<<! строчка добавлена
        xmlHttp.open("GET", chaturl, true);
    xmlHttp.onreadystatechange = makesession;
    xmlHttp.send( null );
}

function makesession(xmlHttp) { // <<<! параметр при вызове вставляется сам
    if (xmlHttp.readyState == 4) {
...





--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Rigel
Дата 18.2.2009, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 24.7.2007
Где: Москва

Репутация: нет
Всего: нет



Цитата(ksnk @ 18.2.2009,  16:13)
function makesession(xmlHttp) { // <<<! параметр при вызове вставляется сам
    if (xmlHttp.readyState == 4) {
...

[/code]

Вот, что-то он не выставляется сам... трассирую такой вот вариант (выкинуто все лишнее кроме одной ветки):
Код

function get_http(){
var xmlHttp = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5) try {
    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) { try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e2) {
        xmlHttp = false;
    }
}
@end @*/

if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
    xmlHttp = new XMLHttpRequest();
}
    return xmlHttp;
}

function update_clist(xmlHttp) {
//alert('DDDD');
    if (xmlHttp.readyState == 4) {
alert('DDDD');
        var resp = xmlHttp.responseXML;
    UserLst = resp.getElementsByTagName('u');
    var contlist = '';
        for (var i = 0; i < UserLst.length; i++){
            ctag = resp.getElementsByTagName('u')[i].childNodes[0].nodeValue;
            iattr = resp.getElementsByTagName('u')[i].getAttribute('id');
            sattr = resp.getElementsByTagName('u')[i].getAttribute('s');
            if(sattr == 3){imag = "<img src=\"/img/0/convert_z.png\" height=\"15\" width=\"14\"/>";}
            if(sattr == 2){imag = "<img src=\"/img/0/convert_n.png\" height=\"15\" width=\"14\"/>";}
            if(sattr == 1){imag = "<img src=\"/img/0/convert_zb.png\" height=\"15\" width=\"14\"/>";}
            if(sattr == 0){imag = "<img src=\"/img/0/convert_nb.png\" height=\"15\" width=\"14\"/>";}
            var hrf = "<a href=\"/user/"+iattr+"\">";

            contlist = contlist + hrf + imag + ' '+ ctag + '</a><br/>';
        }
    document.getElementById("clist").innerHTML = contlist;
    }             
}

function check_contact() {
    var url = "/cgi/cont_list";
    var xmlHttp = get_http();
    xmlHttp.open("GET", url, true);
    xmlHttp.onreadystatechange = update_clist;
    xmlHttp.send( null );
//alert(url);
    readumess = setTimeout('check_contact()', tout);
    pause = 0;
}

function check_cont(){
    check_contact();
}



Трассируется до строки     if (xmlHttp.readyState == 4) {
Дальше, где аллерт, часть не выполняется - значит, параметр-объект в функцию не попадает...
--------------------
С уважением. Rigel. http://www.smoliy.ru
PM MAIL WWW ICQ   Вверх
ksnk
Дата 18.2.2009, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Оops! нужно так!
Код

function session_start(){
    var chaturl = "/cgi/chat?id=" + toid + "&m=start";
alert(chaturl);
    var xmlHttp=getHttp();   // <<<! строчка добавлена
        xmlHttp.open("GET", chaturl, true);
    xmlHttp.onreadystatechange = makesession;
    xmlHttp.send( null );
}
function makesession() { // <<<! параметр нифига не вставляется!!! :-(
    var xmlHttp=this; // << для единообразия. В принципе, можно просто везде this использовать...
    if (xmlHttp.readyState == 4) {
...





Это сообщение отредактировал(а) ksnk - 18.2.2009, 17:30


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Rigel
Дата 19.2.2009, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 24.7.2007
Где: Москва

Репутация: нет
Всего: нет



Спасибо большое, этот вариант работает.
--------------------
С уважением. Rigel. http://www.smoliy.ru
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.2662 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.