Этот чёртов Ajax. Проблема с Ie

Тема в разделе "Web 2.0, AJAX, Ruby, RSS технологии", создана пользователем Biosi, 11 мар 2009.

Статус темы:
Закрыта.
  1. Biosi

    Biosi Гость

    Всем доброго времени суток. Я недавно начал изучать 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>

    ПОМОГИТЕ, а?
     
  2. etc

    etc Гость

    xmlhttp.responseText и больше responseXML не делайте, а то "снег голова упадет, совсем больно будет" (с) :(
     
  3. Biosi

    Biosi Гость

    Я бы с радостью, но если я буду разбирать сложный XML с помощью responseText, то, возможно, у меня не только "снег голова упадет", но и всё остальное отвалится! :(
     
  4. etc

    etc Гость

    А мышки плакали, но продолжали прыгать на кактусы ...
     
  5. Biosi

    Biosi Гость

    Сам ты мышка!
     
  6. etc

    etc Гость

    Не, яж на кактусы не прыгаю, я точно знаю что к чему!
     
  7. Biosi

    Biosi Гость

    Проблема заключается в том, что мне нужно разбирать XML - файлы, хранящие много информации. Т.е. много элементов - сотни. Неприемлемо работать с текстовой строкой в этом случае. Вот я и пытаюсь научиться использовать responseXML... Неужели ни кто из посетителей этого форума не может мне помочь? Люди, отзовитесь!
     
  8. etc

    etc Гость

    млин ... вам что не понятно в первом моем посте? какой нафик responseXML?
    забудьте, как будто его и нет вовсе, и небыло никогда, и да прибудет с вами щасте :rolleyes:


    а работать с респонзом можно по разному, от того что в названии есть "текст" не должно ограничивать программиста, у вас есть мощный инструмент - javascript
     
  9. Biosi

    Biosi Гость

    Уважаемый etc, я Вашу мысль понял. Спасибо Вам за нее. Но всё же я хотел бы разобраться, как работает responseXML, если это, конечно, возможно. Может быть, кто-то поможет мне в этом?
     
  10. etc

    etc Гость

    Врятли, вам уже ничего не поможет ... :rolleyes: если простая логика вам отказывает ...
    Еще раз, с responseXML нельзя работать!!!! впринципе!!! т.к. это ничего не гарантирует!!!
    это как деление на ноль запрещено, т.е. вы конечно можете делить на ноль, но это уже как с мышками - обколитель в кровь и только.
    а вот responseText - наоборот, уж незнаю сейчас стало яснее или нет ?

    Ну за наезд конечно извините, но вы уж и сами ... "уперлись рогом, хочу и все тут".
     
  11. Biosi

    Biosi Гость

    Весьма прискорбен сей факт, уважаемый! :rolleyes:
     
  12. etc

    etc Гость

    Факт того что на ноль делить нельзя? я принимаю такие вещи как есть и не парюсь :rolleyes:
     
  13. Biosi

    Biosi Гость

    Да всё прискорбно. И то что по-видимому responseXML - безнадёжно глючная штука, и то что Вы на меня "наехали". И то что на ноль делить нельзя - а хотелось бы! Да и мышек жалко - им ведь больно!... :rolleyes:
     
  14. etc

    etc Гость

    Дело не в этом, а в том, что "скрипач не нужен" :) вот правильные браузеры его и выкинули.
     
  15. Biosi

    Biosi Гость

    В общем с учётом того что кроме любезно согласившегося со мной побеседовать господина etc ни кто больше не соизволил поучавствовать, так и положим: скрипач идёт далеко и на долго. Т.е. responseXML использовать крайне нежелательно. А значит придётся поднатужиться и, встав враскоряку, переваривать информацию с помощью responseText. А чтобы совсем не свихнуться, вместо XML буду работать с JSON. Спасибо. Тема исчерпана.
     
  16. etc

    etc Гость

    Вы всетаки какойто "не русский" ... яж вам черным по белому рассказал, что его правильные браузеры выкинули и нет его, потому что он нафик не нужен, только замедляет работу а пользы - пшик.
     
  17. abraner

    abraner Гость

    Сомневаюсь, что IE правильный браузер )

    Проблема в том, что IE до конца "не понимает", что это xml данные.

    Долго мучился с аналогичной проблемой, пока в скрипте, который формирует xml данные не вписал
    header("Content-type: text/xml; charset=windows-1251");

    После этого все заработало корректно.
     
Загрузка...
Похожие Темы - Этот чёртов Ajax
  1. Dragon108
    Ответов:
    3
    Просмотров:
    2.559
Статус темы:
Закрыта.

Поделиться этой страницей