Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема совместимости кода в IE и Opera
 
 автор: MRE   (15.06.2007 в 16:51)   письмо автору
 
 

Посылаю запрос в скрипт 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 поддерживает.
В чем тут дело?

   
 
 автор: CNT   (15.06.2007 в 20:38)   письмо автору
 
   для: MRE   (15.06.2007 в 16:51)
 

В MSIE есть целых десять разных методов item, в которых, бывает, путаются не только опытные программеры, но и даже сам браузер :-)
Вы же добавили браузеру головную боль в виде ещё какого-то item'a
Неужто фантазии не хватает поименовать собственные объекты как-нить иначе, не применяя используемых DOM имен объектов/свойств/методов?
Возьмите за правило в имени любой переменной в любом коде на любом языке программирования иметь, например, цифру или символ подчеркивания, тогда никаких конфликтов этого типа не будет в принципе.

PS. Я не утверждаю, что причина ваших проблем кроется в вышесказанном, но всё же попробуйте сменить имя тега xml-документа.

   
 
 автор: coloboc66   (15.06.2007 в 20:47)   письмо автору
 
   для: CNT   (15.06.2007 в 20:38)
 

Это еще не всё: вы ещё попробуйте в Лисе потестировать...

   
 
 автор: MRE   (16.06.2007 в 18:15)   письмо автору
 
   для: CNT   (15.06.2007 в 20:38)
 

Не помогло (item1 сделал).
У меня есть подозрение, что метод getElementsByTagName IE6 не понимает.
Поскольку getElementById относится к DOM0, а getElementsByTagName - к DOM1.
Хотя не понятно почему, он же поддерживает DOM1.

   
 
 автор: MRE   (16.06.2007 в 19:17)   письмо автору
 
   для: MRE   (16.06.2007 в 18:15)
 

Подскажите плиз где можно почитать о том, как можно обработать xml-ответ.
Может что-нибудь получится другим способом.

   
 
 автор: MRE   (19.06.2007 в 19:19)   письмо автору
 
   для: MRE   (16.06.2007 в 19:17)
 

Дак что никто не знает в чем может быть проблема.

   
 
 автор: ilyaILF   (19.06.2007 в 19:28)   письмо автору
 
   для: MRE   (15.06.2007 в 16:51)
 

getElementsByTagName("item") - это массив, и чтобы обратиться к конкретному элементу вы указываете в этой функции его индекс - html += itemArray[item(i)].firstChild.data; не так ли должно быть?!

   
 
 автор: MRE   (20.06.2007 в 12:19)   письмо автору
 
   для: ilyaILF   (19.06.2007 в 19:28)
 

Неа, не так.
Пробовал в IE7 - та же проблема, видимо проблема не в совместимости в DOM1, а в чем то другом.
Подскажите плиз!! Уже не знаю что делать.
Исключение происходит на строчке:
itemArray = xmlRoot.getElementsByTagName("item1");

   
 
 автор: MRE   (20.06.2007 в 14:37)   письмо автору
 
   для: MRE   (20.06.2007 в 12:19)
 

Все, разобрался сам.
Спасибо всем.

   
 
 автор: Eugene77   (20.06.2007 в 20:35)   письмо автору
 
   для: MRE   (20.06.2007 в 14:37)
 

Так в чём дело было?

   
 
 автор: MRE   (21.06.2007 в 19:07)   письмо автору
 
   для: Eugene77   (20.06.2007 в 20:35)
 

В заголовок xml-ки надо было поместить header('Content-Type: text/xml');
А то он не понимал, что это xml-ка.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования