xml ответ в AJAX

Тема в разделе "PHP", создана пользователем Rigor, 25 авг 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Rigor

    Rigor

    Регистр.:
    1 июн 2008
    Сообщения:
    202
    Симпатии:
    33
    Есть функция обновления:

    Код:
    function updatePageform() {
    
    
    if (request.readyState == 4) {
    if (request.status == 200) {
    var status = request.responseXML;
    
    var xmlq = status.getElementByTagName("q")[0];
    var q = xmlq.firstChild.nodeValue;
    
    var xmlw = status.getElementByTagName("w")[0];
    var w = xmlw.firstChild.nodeValue;
    
    var xmle = status.getElementByTagName("e")[0];
    var e = xmle.firstChild.nodeValue;
    
    document.getElementById("doc").innerHTML = "Обновлено";
    } else if (request.status == 404) {
             alert ("Requested URL is not found.");
           } else if (request.status == 403) {
             alert("Access denied.");
           } else
             alert("status is " + request.status);
         } else {
    	 var form = document.getElementById("form");
    	 form.style.display = "none";
    document.getElementById("doc").innerHTML = "Ждите";
    	 }
       } 
    Файл, с которого приходят данные.

    PHP:
    header("Content-Type: text/xml");
    echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>;

    ?>
    <total>
    <q><? echo $q ?></q>
    <w><? echo $w ?></w>
    <e><? echo $e ?></e>

    </total>";
    Итог: нет статуса 4. Т.к. все время сообщение ждите. В чем проблема? Заранее спасибо
     
  2. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    Если верно скопировал файл то у тебя ошибка в скрипте.
    Или лишнее закрытие "?>" или слишком поздно закрываешь echo.
    Ты наверное хотел написать так:
    PHP:
    <?php
    header
    ("Content-Type: text/xml");
    echo 
    "<?xml version=\"1.0\" encoding=\"utf-8\"?>;";
    ?>
    <total>
    <q><? echo $q ?></q>
    <w><? echo $w ?></w>
    <e><? echo $e ?></e>
    </total>
     
  3. Rigor

    Rigor

    Регистр.:
    1 июн 2008
    Сообщения:
    202
    Симпатии:
    33
    А разве то что после ечо в твоем коде идет не нужно отправлять с помощью ечо?(сори за тавтологию)). Вмысле вобще каким-то способом нужно передавать? Или просто вот-так написать?

    Исправил как вы сказали, но ошибка все та же
     
  4. Hangar

    Hangar Создатель

    Регистр.:
    25 июн 2008
    Сообщения:
    15
    Симпатии:
    0
    хост с которого делаете запрос и то, куда его делаете один?
    а вообще, используйте JQuery, там много функций для работы с AJAX, крайне удобно.
     
  5. Rigor

    Rigor

    Регистр.:
    1 июн 2008
    Сообщения:
    202
    Симпатии:
    33
    Да один. Что странно, если в этом коде:

    Код:
    function updatePageform() {
    if (request.readyState == 4) {
    if (request.status == 200) {
    var status = request.responseXML;
    [B]var xmlq = status.getElementByTagName("q")[0];
    var q = xmlq.firstChild.nodeValue;
    var xmlw = status.getElementByTagName("w")[0];
    var w = xmlw.firstChild.nodeValue;
    var xmle = status.getElementByTagName("e")[0];
    var e = xmle.firstChild.nodeValue;[/B]
    document.getElementById("doc").innerHTML = "Обновлено";
    } else if (request.status == 404) {
             alert ("Requested URL is not found.");
           } else if (request.status == 403) {
             alert("Access denied.");
           } else
             alert("status is " + request.status);
         } else {
    	 var form = document.getElementById("form");
    	 form.style.display = "none";
    document.getElementById("doc").innerHTML = "Ждите";
    	 }
       }
    Убрать выделенное совсем или строчку document.getElementById("doc").innerHTML = "Обновлено"; поднять над ними, то все работает...
     
Статус темы:
Закрыта.