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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запросы по разным адресам одним XmlHttp 
:(
    Опции темы
anian
Дата 2.8.2006, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 2.8.2006

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



Код

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title></title>
  <script language="JavaScript" type="text/javascript">
    var x;
    function first(){
        x = new XMLHttpRequest();
        x.onreadystatechange = handler;
        x.open('GET', 'info.php?search=first', true);
        x.send(null);
    }
    function second(){
        x.open('GET', 'info.php?search=second', true);
        x.send(null);
    }
    function handler(){
        if (x.readyState == 4 && x.status == 200){
            document.getElementById('main').innerHTML += '&nbsp;' + x.responseText;
        }
    }
  </script>
</head>
<body>
<div id="main" style="border: 1px dashed red" onclick="first()">first</div>
<div id="m" style="border: 1px dashed green" onclick="second()">second</div>
</body>
</html>


Код

<?php
    echo "Search: ".$_GET["search"];
?>


При клике на div#first делается запрос на сервер, ответ в него же должен добавиться "Search: first" - добавляется, при клике на div#second снова запрос и опять же в div#first  должно добавиться "Search: second" - не добавляется.
Не могу понять, почему?
PM MAIL   Вверх
S.A.P.
Дата 2.8.2006, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

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



Одним объектом не получается (в IE). Приходится каждый раз создавать новый.
Код

function request(url, handler)
{
    var x = new XMLHttpRequest();
    var state_change = function ()
    {
        if (x.readyState == 4 && x.status == 200)
            handler(x.responseText);
    }
    x.onreadystatechange = state_change;
    x.open('GET', url, true);
    x.send(null);
}

function first()
{
    request('info.php?search=first', handler);
}

function second()
{
    request('info.php?search=second', handler);
}

function handler(text)
{
    document.getElementById('main').innerHTML += '&nbsp;' + text;
}


надеюсь, этот пример решает проблему в этой теме: http://forum.vingrad.ru/index.php?showtopic=106497
PM MAIL   Вверх
anian
Дата 2.8.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 2.8.2006

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



Добавим в PHP-код такое:
Код

$fp = fopen("screen.dat", "a");
fwrite($fp, $_GET["search"]);
fclose($fp);


Подавим div'ы раз по 5 и увидим, что запросы-то идут...
PM MAIL   Вверх
Messenger
Дата 2.8.2006, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 16.2.2006

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



Но в http://www.w3.org/TR/XMLHttpRequest/#dfn-open отчетливо сказано:
Цитата

 If open() is called when readyState is 4 (Loaded) the entire object MUST be reset.

Т.е. x.onreadystatechange после второго x.open(...) становится null. По моему так, если не ошибаюсь. Попробуй поставить x.onreadystatechange = handler; после второго x.open(...).
PM MAIL   Вверх
anian
Дата 3.8.2006, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 2.8.2006

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



Messenger, спасибо! Ты прав...все-таки курить маны полезно...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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