[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с получением xml ответа ajax
mre
Посылаю запрос в скрипт php (с помощью Ajax), он возвращает xml-ку:
Код
<?xml version="1.0" ?>
<response>
<item1>
2007-06-14 23:46:42 [MRE] - 1
</item1>
<item1>
2007-06-14 23:47:34 [MRE] - 2
</item1>
<item1>
2007-06-14 23:47:48 [MRE] - 3
</item1>
<item1>
2007-06-15 01:07:13 [MRE] - 4
</item1>
</response>


Затем Java-функция ее обрабатывает:

Код
function chat()
{
    var chat,chat_text,itemArray,html="";
    if (request.readyState == 4)
    {
        if (request.status == 200)
        {
            try
            {
                chat = delNode("chat");
                alert(request.responseText);
                var xmlResponse = request.responseXML;
                var xmlRoot = xmlResponse.documentElement;
                itemArray = xmlRoot.getElementsByTagName("item1");
                for (var i=0; i<itemArray.length; i++)
                    html += itemArray.item(i).firstChild.data;
                chat_text = document.createTextNode(html);
                chat.appendChild(chat_text);
            }
            catch(e)
            {
                alert("Ошибка чтения ответа: " + e.toString());
            }
        }
        else
            alert("Возникли проблемы во время получения данных: \n" + request.statusText);
    }
}

В Opera все работает отлично, а в IE6+ вываливается alert по обрабатываемому исключению:
Ошибка чтения ответа: Object Error
Вылетает на строчке itemArray = xmlRoot.getElementsByTagName("item1");

Пробовал вместо itemArray = xmlRoot.getElementsByTagName("item1");
написать itemArray = xmlResponse.getElementsByTagName("item1");
тогда не вылетает по исключению, но itemArray ничего не соджержит.
В чем тут дело?
Помогите плиз написать корректный код!



Спустя 7 минут, 56 секунд (20.06.2007 - 12:27) vasa_c написал(а):
responseText содержит то что нужно?
С сервера отправляются нужные заголовки?

Спустя 27 минут, 19 секунд (20.06.2007 - 12:54) mre написал(а):
Цитата(vasa_c @ 20.6.2007, 13:27) [snapback]23094[/snapback]
responseText содержит то что нужно?
С сервера отправляются нужные заголовки?


Да, то что нужно.
alert(request.responseText)
выдает:

<?xml version="1.0" encoding="Windows-1251" ?>
<response>
<item1>
23:46 [MRE] - 1
</item1>
<item1>
23:47 [MRE] - 2
</item1>
<item1>
23:47 [MRE] - 3
</item1>
<item1>
01:07 [MRE] - 4
</item1>
<item1>
18:27 [] - ytu
</item1>
</response>

Спустя 31 минута, 13 секунд (20.06.2007 - 13:25) vasa_c написал(а):
Заголовок
Content-Type: text/xml; charset=windows-1251
послан?

Спустя 7 минут, 30 секунд (20.06.2007 - 13:33) mre написал(а):
Цитата(vasa_c @ 20.6.2007, 14:25) [snapback]23111[/snapback]
Заголовок
Content-Type: text/xml; charset=windows-1251
послан?


В загаловке исходной страницы, где это все происходит он есть:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

Или его надо посылать еще куда-то при получении ответа от php скрипта?
Разьясните пожалуйста.

Спустя 3 минуты, 18 секунд (20.06.2007 - 13:36) vasa_c написал(а):
В php-сценарии, формирующем xml, посылать заголовок о том, что это именно xml, а не просто текст или еще что-то.

Код
<?php
header('Content-Type: text/xml');
print '<?xml version=....';
...
?>

Спустя 2 минуты, 16 секунд (20.06.2007 - 13:38) mre написал(а):
Спасибо!
Заработало!!


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.