Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Вопрос про запрос


Автор: kaa 14.8.2006, 00:13
Есть код который формирует запрос на сервер к скрипту добавляющему запись в таблицу

Код

var XHR;
function CreateXMLHttpRequest()
{
    if (window.ActiveXObject) 
    {
        XRH = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if (window.XMLHttpRequest) 
    {
        XRH = new XMLHttpRequest();
    }
}


function ClickButtonRequest()
    {
        СreateXMLHttpRequest();
        var message_address = document.forms["private_form"].elements["address"].value;
        var message_text = document.forms["private_form"].elements["message"].value;
        var str = "message_in.php?private=y&address=" + message_address + "&message=" + message_text;
        XRH.open("GET", str);
        XRH.onreadystatechange = EventRequest;
        XRH.send(null); 
    }
    
    
    function EventRequest()
    {
        if (XRH.readyState == 4) 
        {
            
        }
    }


Дак вот - неработает.
Но как тока в функцию обработки ставлю выполнения какого-нить дествия, типа:
Код

function EventRequest()
    {
        if (XRH.readyState == 4) 
        {
            alert("111");
        }
    }


всё начинает работать!

Отчего так, может кто-нить объяснить?

Автор: Seekoo 14.8.2006, 01:06
поиск юзай smile 

Автор: Sardar 14.8.2006, 01:34
Цитата(kaa @  13.8.2006,  23:13 Найти цитируемый пост)
Дак вот - неработает.

kaa, что значит "не работает" ? Ну в обработчике onreadystatechange, в котором данные с запроса получаем, ничего нет, следовательно ничего происходить не будет. Код пишем или копируем не задумываясь? smile

Автор: kaa 14.8.2006, 20:04
Sardar, Нет. ну простите, обработчик-то вызывается после того как на сервер передаётся инфа или после?!
Я всегда думал что после - так почему без кода в обработчике отказывается работать СЕРВЕРНЫЙ скрипт?!

Добавлено @ 20:05 
Seekoo, 
Я б с радостью, но незнаю как сформулировать запрос smile

Автор: Sardar 14.8.2006, 20:38
Цитата(kaa @  14.8.2006,  19:04 Найти цитируемый пост)
Нет. ну простите, обработчик-то вызывается после того как на сервер передаётся инфа или после?!

Э...   обработчик вызываеться ровно в тот момент когда ответ полностью получен, разобран и браузер готов передать его скрипту smile
Цитата(kaa @  14.8.2006,  19:04 Найти цитируемый пост)
так почему без кода в обработчике отказывается работать СЕРВЕРНЫЙ скрипт?!

Нет, ну я конечно тоже могу чудес про инопланетян расказать, но всё же где код? smile
Создавай на сервере файл как флаг, убедись что скрипт отрабатывает, иначе не может не быть. Убедись что браузер в консоли не ругаеться на синтаксические и другие ошибки по типу "не заметил", мало ли чего...

Автор: kaa 14.8.2006, 21:05
Sardar, в общем я незнаю в чем был секрет, но так как обработчик мне никуда неупёрся я поступил проще:

Код

function ClickButtonRequest()
    {
        СreateXMLHttpRequest();
        var message_address = document.forms["private_form"].elements["address"].value;
        var message_text = document.forms["private_form"].elements["message"].value;
        var str = "message_in.php?private=y&address=" + message_address + "&message=" + message_text;
        XRH.open("GET", str);
       // XRH.onreadystatechange = EventRequest;
        XRH.send(null); 
    }


Согласен, радикально, но зато работает всё прекрасно...  smile

Добавлено @ 21:06 
Спасибо всем за ответы!

Правда ща еще один топик запосчу - следующий косяк попёр smile

Автор: Sardar 14.8.2006, 22:49
kaa, вообще это не хорошо отсылать запросы и не убеждаться что дошли, хотя бы синхронный режиим выстви, что бы браузер " повис" пока ответ не придёт.

Судя по коду не было у тебя функции EventRequest (хотя в листинге ведь есть!), браузер ругался на не существующую переменную. Вообщем чудеса, текст из консоли бы всё разяснил, но ты ведь не даёшь smile

Автор: kaa 16.8.2006, 14:52
Sardar, Ну скажем так, браузер вабще ничего не говарил - он тупо молчал, во вторых я код копировал прям из редактора, так что обработчик там был...
и еще.. Про какую консоль ты говаришь?

Добавлено @ 14:59 
А вот кстати про синхронный режим это да.. Только вот вопрос - скрипт исполняется в отдельном фрейме, подвиснет на время ожидания тока документ этого фрейма или всё окно браузера?
Если всё окно то непойдёт - там еще как минимум четыре фрейма с кодом on-line

Автор: Sardar 16.8.2006, 15:44
Пвиснет только фрейм, проверено на мозилле, за другие не отвечаю smile

В опере и в мозилле есть консоль (в лисе Tools -> Java Script Console) в котрой выкладываються все ошибки, как без неё можно работать я уже не представляю smile
В ИЕ в левом нижнем углу иконка смениться если на странице ошибка, кликни по ней, расскажет что как, правда только о последней ошибке.

Автор: kaa 16.8.2006, 18:35
Sardar, Не, иконка невылазила... Знаем такую - треугольник жёлтый... Небыло её smile
Пасибо за совет!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)