Вопрос

Я делаю сеть, где я сильно использую запросы Ajax в сервис XML.На самом деле, моя сеть-это фронт, практически без сервера, и использует Ajax для связи с внутренним концом.

Все шло хорошо (я разработал и протестировал в Ubuntu 9.04 и Firefox 3.0 в качестве браузера).Однажды я решил посмотреть, как работает мой Интернет в IE8...ужастик!

Ничто не работало так, как это чудесным образом происходило в Firefox.Если быть более конкретным, Request.HTML не работал.Как я уже сказал, моя сеть сильно зависела от этого, поэтому ничего не работало.

Я потратил день, пытаясь что-то запустить, но безуспешно..Единственный вывод, в который я приехал, было то, что XML был неправильно проанализирован (я надеюсь, что я ошибаюсь).Перейдем к коду:

var req = new Request.HTML({
        url: 'service/Catalog.groovy',

        onSuccess: function(responseTree, responseElements) {

            var catz = responseElements.filter('category');
            catz.each(function(cat){
                // cat = $(cat);
                var cat_id = cat.get('id');
                var subcategory = cat.getElement('subcategory');
                alert(cat_id);
                alert(cat.get('html'));
                alert(subcategory.get('html'));
           }
       },
       onFailure: function(){...}

});

например, этот фрагмент кода.В фаерфоксе все работало отлично.Он предупредил идентификатор (например, 7), а затем показал содержимое элемента категории, например:

<subcategory id='1'>
      <category_id>7</category_id>
      <code>ACTIO</code>
      <name>Action</name>
</subcategory>

а затем оно показало содержимое какого-то внутреннего элемента, в данном случае:

<category_id>7</category_id>
<code>ACTIO</code>
<name>Action</name>

В IE8 первое предупреждение сработало OK (предупреждение 7), но следующее предупреждение (Alert (Cat.Get ('html'));) дал пустую строку, а последняя бросила исключение ...Он сказал что -то о подкатегории Beeing Null.

Что я заключил с этим, так это то, что элементы, где правильно проанализировался в Firefox, но в IE8 я получил только теги и атрибуты ОК, все остальное было совершенно неправильным (на самом деле, отсутствует).Я имею в виду, внутреннее содержание всех элементов ответа, где ушел!

Другой факт, который вы могли бы использовать:этот код:

alert(cat.get('tag')); resulted in
      Firefox: category
      IE8: /category <-----------(?)

хм, что еще...Ах, да...строка, которую вы видите, прокомментирована выше (cat = $(cat);) было чем -то, что я пытался сделать, чтобы исправить это.Я прочитал в документах по мутоуторам, которые должны были явно назвать $ функция на элементах, чтобы получить всю магию элементов...Но это ничего не исправил.

Я был в таком отчаянии...Я даже возился с mootools.js код

Итак...Что я хочу, дорогой Mootool-Pro,-это помочь мне решить эту проблему, потому что мне действительно нужно, чтобы Интернет функционировал в IE8, и на самом деле я выбрал мутоусы, чтобы забыть о проблемах совместимости ...

пс:если что-то не понятно, СПРАШИВАЙТЕ!Буду признателен за любую помощь :D

Это было полезно?

Решение

Некоторое время назад у меня была похожая проблема с использованием jQuery.Проблема заключалась в том, что в IE входящие данные ответа должны были обрабатываться Microsoft.XMLDOM Объект ActiveX.

Общие шаги заключаются в следующем:

  1. Создайте экземпляр объекта ActiveX.

    var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");

  2. Передайте ему входящие данные ответа и загрузите их.

    oXmlDoc.loadXML(sXmlResponseData);

  3. Разберите его по мере необходимости.

Вы можете посмотреть в полном разрешении здесь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top