как получить XML в IE8 с помощью mootools
-
05-07-2019 - |
Вопрос
Я делаю сеть, где я сильно использую запросы 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.
Общие шаги заключаются в следующем:
Создайте экземпляр объекта ActiveX.
var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
Передайте ему входящие данные ответа и загрузите их.
oXmlDoc.loadXML(sXmlResponseData);
Разберите его по мере необходимости.
Вы можете посмотреть в полном разрешении здесь.