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


Автор: bars80080 4.4.2008, 15:23
значит, решил я им всё же заняться

вот значит запрос: 
Код
    if(document.all) { var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
    else var xmlhttp = new XMLHttpRequest();
    xmlhttp.open("GET", 'http://localhost/site/opros_call_center.php?ajax=1&result=' + z); 

    xmlhttp.onreadystatechange = function() { 
        if(xmlhttp.readyState == 4) alert(xmlhttp.responseText);
    } 
 стопорится там где я оставил пропущенную строку
адрес есть, если на пустую строку положить alert(xmlhttp.readyState); вернёт 1
если адрес ввести в бразуер, то он выплюнет некоторый нужный текст

к сожалению, лазим по ссылкам, везде пишут как сделать запрос, а вот что делать и как делать ответ, неизвестно

посему глобальный вопрос, что не так?

ну или поконкретнее, не нужно ли формировать настоящий xml на выходе (тоже не помогает), если нет, то что?

Автор: ksnk 4.4.2008, 15:56
Тут, видимо, важна последовательность навешивания свойств и третий параметр при вызове .open'а
Код

req.onreadystatechange = function(){
  if (req.readyState == 4) {
...    
  }
}
req.open("GET", url, true);
req.send(data);


Добавлено через 2 минуты и 32 секунды
Да и реквест как-то, imho, нетрадиционно заводится ;-)
Код

        if (window.XMLHttpRequest) {
            try {
                req = new XMLHttpRequest();
            } catch (e){}
        } else if (window.ActiveXObject) {
            try {
                req = new ActiveXObject('Msxml2.XMLHTTP');
            } catch (e){
                req = new ActiveXObject('Microsoft.XMLHTTP');
            }
        }

Хотя я встречал и более компактную запись...

Автор: bars80080 4.4.2008, 16:20
 smile ksnk, 
сейчас оно выглядит так: 
Код
    if (window.XMLHttpRequest) {
        try { req = new XMLHttpRequest(); } 
        catch (e){}} 
    else if (window.ActiveXObject) {
        try { req = new ActiveXObject('Msxml2.XMLHTTP'); } 
        catch (e){ req = new ActiveXObject('Microsoft.XMLHTTP'); }}
    req.onreadystatechange = function() { 
        if(req.readyState == 4) ajax_o(req.responseText); }     
    req.open("GET", 'http://localhost/site/opros_call_center.php?ajax=1&result=' + z, true);
    req.send(''); 
 наверно, req.send() не хватало

стало быть не обязательно формировать XML, главное чтоб разобрать можно было на приёме?

там ещё чухня с кодировками и кэшем была, поставил вот заголовки, вроде нормально отрабатывает: 
Код
header("Content-Type: text/html; charset=\"windows-1251\"");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 
 должно хватить?

Автор: ksnk 4.4.2008, 18:34
Вроде, должно. 
Если пользоваться req.open("POST",... вместо GET, то проблем с заголовками кэширования просто не должно быть, так как нормальные бройзеры POST не кэшируют...

Автор: zibox86 5.4.2008, 13:45
Цитата(bars80080 @  4.4.2008,  16:20 Найти цитируемый пост)
стало быть не обязательно формировать XML, главное чтоб разобрать можно было на приёме?


Это уже зависит от того как ответ разбирать будешь responseXML или resposeText!

Автор: bars80080 7.4.2008, 09:53
спасибо всем

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