как получить XML в IE8 с помощью mootools - PullRequest
1 голос
/ 21 октября 2009

Я работаю в сети, где интенсивно использую запросы 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(){...}

});

например, этот кусок кода. В Firefox это работало отлично. Он предупредил идентификатор (например, 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 первое оповещение работало нормально (оповещено 7) но следующее предупреждение (alert (cat.get ('html'));) выдало пустую строку и последний бросил исключение ... он сказал что-то о подкатегории ноль.

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

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

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

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

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

ОК, так что ... Я хочу, чтобы вы, дорогие профессионалы, помогли мне решить эту проблему, потому что мне действительно нужно, чтобы веб работал в IE8, и на самом деле я выбрал mootools забыть о проблемах совместимости ...

ps: если что-то не понятно, пожалуйста, спросите! Буду признателен за любую помощь: D

1 Ответ

1 голос
/ 21 октября 2009

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

Основные шаги:

  1. Создание объекта ActiveX.

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

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

    oXmlDoc.loadXML(sXmlResponseData);

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

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

...