|
|
|
| Посылаю запрос в скрипт php (с помощью Ajax), он возвращает xml-ку:
<?xml version="1.0" ?>
<response>
<item>
2007-06-14 23:46:42 [MRE] - 1
</item>
<item>
2007-06-14 23:47:34 [MRE] - 2
</item>
<item>
2007-06-14 23:47:48 [MRE] - 3
</item>
<item>
2007-06-15 01:07:13 [MRE] - 4
</item>
</response>
Затем Java-функция ее обрабатывает:
function chat()
{
var chat,chat_text,itemArray,html="";
if (request.readyState == 4)
{
if (request.status == 200)
{
try
{
chat = delNode("chat");
var xmlResponse = request.responseXML;
var xmlRoot = xmlResponse.documentElement;
itemArray = xmlRoot.getElementsByTagName("item");
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
Может быть ему не нравится что-то в формате xml-ки? Хотя вроде все правильно.
И IE6 вроде DOM1 поддерживает.
В чем тут дело? | |
|
|
|
|
|
|
|
для: MRE
(15.06.2007 в 16:51)
| | В MSIE есть целых десять разных методов item, в которых, бывает, путаются не только опытные программеры, но и даже сам браузер :-)
Вы же добавили браузеру головную боль в виде ещё какого-то item'a
Неужто фантазии не хватает поименовать собственные объекты как-нить иначе, не применяя используемых DOM имен объектов/свойств/методов?
Возьмите за правило в имени любой переменной в любом коде на любом языке программирования иметь, например, цифру или символ подчеркивания, тогда никаких конфликтов этого типа не будет в принципе.
PS. Я не утверждаю, что причина ваших проблем кроется в вышесказанном, но всё же попробуйте сменить имя тега xml-документа. | |
|
|
|
|
|
|
|
для: CNT
(15.06.2007 в 20:38)
| | Это еще не всё: вы ещё попробуйте в Лисе потестировать... | |
|
|
|
|
|
|
|
для: CNT
(15.06.2007 в 20:38)
| | Не помогло (item1 сделал).
У меня есть подозрение, что метод getElementsByTagName IE6 не понимает.
Поскольку getElementById относится к DOM0, а getElementsByTagName - к DOM1.
Хотя не понятно почему, он же поддерживает DOM1. | |
|
|
|
|
|
|
|
для: MRE
(16.06.2007 в 18:15)
| | Подскажите плиз где можно почитать о том, как можно обработать xml-ответ.
Может что-нибудь получится другим способом. | |
|
|
|
|
|
|
|
для: MRE
(16.06.2007 в 19:17)
| | Дак что никто не знает в чем может быть проблема. | |
|
|
|
|
|
|
|
для: MRE
(15.06.2007 в 16:51)
| | getElementsByTagName("item") - это массив, и чтобы обратиться к конкретному элементу вы указываете в этой функции его индекс - html += itemArray[item(i)].firstChild.data; не так ли должно быть?! | |
|
|
|
|
|
|
|
для: ilyaILF
(19.06.2007 в 19:28)
| | Неа, не так.
Пробовал в IE7 - та же проблема, видимо проблема не в совместимости в DOM1, а в чем то другом.
Подскажите плиз!! Уже не знаю что делать.
Исключение происходит на строчке:
itemArray = xmlRoot.getElementsByTagName("item1"); | |
|
|
|
|
|
|
|
для: MRE
(20.06.2007 в 12:19)
| | Все, разобрался сам.
Спасибо всем. | |
|
|
|
|
|
|
|
для: MRE
(20.06.2007 в 14:37)
| | Так в чём дело было? | |
|
|
|
|
|
|
|
для: Eugene77
(20.06.2007 в 20:35)
| | В заголовок xml-ки надо было поместить header('Content-Type: text/xml');
А то он не понимал, что это xml-ка. | |
|
|
|