X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Этот чёртов AJAX
Гость_0_*
Гость_0_*
Topic Starter сообщение 11.3.2009, 18:38; Ответить: Гость_0_*
Сообщение #1


Всем доброго времени суток. Я недавно начал изучать AJAX. В процессе изучения решил создать небольшой проект, в котором будут использованы основные возможности AJAX и JavaScript в частности. В общем, проект я создал, протестировал его в Opera - всё работает! Но радовался я недолго. Ровно до того момента, как "попробовал" его в нашем родном и всеми любимом Internet Explorer 7. Здесь мой проект споткнулся о свойство объекта XMLHTTP, называемое responseXML. Именно это свойство содержит обьект document необходимого мне XML-файла, в котором хранятся нужные мне данные.

В интернете решение я не нашел. Везде пишут, что достаточно написать "responseXML.getElementsByTagName('имя тэга')" и будет мне счастье. Но счастья нет, потому как в IE это не работает ;)
Уж я пытался и через .body, и через .documentElement, но нет, пропарсить искомый XML мне никак не удается.

Вот небольшой примерчик, который сам по себе ни какого смысла не имеет, кроме того, что иллюстрирует мою проблему.

1) Файл XML (testResponse.xml):

<?xml version="1.0" encoding="windows-1251"?>
<resp>OK!</resp>


2) Файл со скриптом, который будет пытаться парсить вышеозначенный xml (testResponse.html):

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Тест</title>
</head>

<body>
<script language="javascript" type="text/javascript">
function getXmlHttp(){
    var xmlhttp;
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            xmlhttp = false;
        }
    }

    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}

var xmlhttp = getXmlHttp();
xmlhttp.open('GET', 'testResponse.xml', true);
xmlhttp.onreadystatechange = function() {
  if (xmlhttp.readyState == 4) {
     if((xmlhttp.status == 200) || (xmlhttp.status == 0)) {
       alert(xmlhttp.responseText);
       var childEl = document.createElement('div');

       // ВОТ ЭТА СТРОКА, КОТОРАЯ ПРЕДСТАВЛЯЕТ ПРОБЛЕМУ:
       childEl.innerHTML = xmlhttp.responseXML.getElementsByTagName('resp').item(0).firstChild.data;
      
       document.body.appendChild(childEl);
         }
  }
};
xmlhttp.send(null);
alert('Конец скрипта');
</script>
</body>

</html>


ПОМОГИТЕ, а?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 12.3.2009, 11:52; Ответить: ZiTosS
Сообщение #2


Да уж я переписал
xmlObj=xmlhttp.responseXML.documentElement;
childEl.innerHTML = xmlObj.firstChild.data;

Работает в FF, но не работает в IE7. Я обычно XML не возвращаю, приду вечером, почитемс ещё ;)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Гость_0_*
Гость_0_*
Topic Starter сообщение 12.3.2009, 13:58; Ответить: Гость_0_*
Сообщение #3


Спасибо, что помогли переформатировать моё сообщение в более удобочитаемый вид. Да, давненько я на форумах не общался, забыл уже как чё делается. Но, к сожалению, действительно IE7 остался непобедимым - XML так и не парсится.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
KURT [197BD]
KURT [197BD]
сообщение 12.3.2009, 19:17; Ответить: KURT [197BD]
Сообщение #4


наверно проблемма в том что IE для тега DIV не поддерживает свойство innerHTML? попробуйте использовать тег SPAN

вместо
...
var childEl = document.createElement('div');
...

использовать
...
var childEl = document.createElement('span');
...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Гость_0_*
Гость_0_*
Topic Starter сообщение 12.3.2009, 19:26; Ответить: Гость_0_*
Сообщение #5


Нет, дело не в этом. Обычный текст (не responseXML) данный скрипт добавляет спопкорно.

На других форумах я узнал, что responseXML, к сожалению, то ли сильно глючит, то ли просто не поддерживается IE. По-видимому, придётся использовать responseText, а вместо XML брать JSON (для удобства).
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Гость_0_*
Гость_0_*
Topic Starter сообщение 12.3.2009, 22:17; Ответить: Гость_0_*
Сообщение #6


В общем я пришел к выводу о невозможности корректного использования responseXML. В ходе разбирательств выяснилось что данный метод не работает в Эксплорере. Выходом из этой ситуации вижу использование responseText, а чтобы проще мне было - вместо XML буду использовать JSON. Всем спасибо, вопрос решен.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 13.3.2009, 23:36; Ответить: ZiTosS
Сообщение #7


Это вам спасибо за пояснения, но всё же...
В общем я пришел к выводу о невозможности корректного использования responseXML. В ходе разбирательств выяснилось что данный метод не работает в Эксплорере.

Ваше высказывание о неработоспособности метода responseXML не точно. Данный метод возвращает object [xmlDOMdocument], проверенно лично мной. А вот уже кривость работы в IE с данным объектом очень даже возможна. Не зря осла прозвали ослом.

Кстати я нашёл рабочий пример
_http://www.howtocreate.co.uk/tutorials/jsexamples/importingXML.html
сам файл с функцией
_http://www.howtocreate.co.uk/jslibs/importxml.js

Стоит только переделать под свои нужды ;)

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44769 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Ищу специалиста Wordpress/PHP/JS/AJAX
5 by_roXe 4290 4.11.2018, 17:09
автор: kikimora17
Открытая тема (нет новых ответов) Давайте раскрутим этот мир? Офферы по доступной цене.
Instagram, VK, YouTube, графика, портреты.
7 relax_ssm 4798 1.2.2017, 10:37
автор: mspcontent
Открытая тема (нет новых ответов) Как называется этот стиль оформления сайта?
7 kspasha 2949 17.12.2016, 16:05
автор: shredinger
Открытая тема (нет новых ответов) Ищу специалиста по js, jquery, ajax, history api и т.д.
3 by_roXe 1533 15.3.2016, 14:17
автор: Edelweiss


 



RSS Текстовая версия Сейчас: 29.3.2024, 16:24
Дизайн