javascript - 如何使用mootools在IE8中接收XML

标签 javascript internet-explorer mootools xmlhttprequest

我正在做一个大量使用 AJAX 请求的网络 XML 服务。事实上,我的web是一个前端,几乎 没有任何服务器并使用 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(){...}

});

比如那段代码。 在火狐浏览器中,它运行得非常完美。它提醒一个 ID(例如 7), 然后显示category元素的内容,例如:

<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 中我只得到了标签和属性 OK, 其他一切 完全错误(事实上,丢失了)。我的意思是,里面的内容 一切 响应的元素消失了!

您可以使用的其他事实:此代码:

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

嗯还有什么... 哦,是的...您在上面看到的注释行 (cat = $(cat);) 是 某物 我试图解决这个问题。我在mootools文档中读到了IE需要的 显式调用 元素上的 $ 函数可以获取所有 Element-magic ...但是这个 没有修复任何问题。

我非常绝望......我什至摆弄mootools.js代码

好的,所以... 亲爱的mootool-pro,我想要你帮我解决这个问题, 因为我真的需要网络在 IE8 中运行,事实上我选择了 mootools 忘记兼容性问题...

ps:如有不清楚的地方,请提问!我将不胜感激任何帮助:D

最佳答案

我不久前使用 jQuery 时遇到过类似的问题。问题在于,在 IE 中,传入的响应数据需要由 Microsoft.XMLDOM ActiveX 对象处理。

一般步骤是:

  1. 实例化 ActiveX 对象。

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

  2. 将传入的响应数据传递给它并加载它。

    oXmlDoc.loadXML(sXmlResponseData);

  3. 根据需要解析它。

您可以查看完整分辨率here .

关于javascript - 如何使用mootools在IE8中接收XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1601873/

相关文章:

javascript - 无法读取未定义的属性 'getState' - Redux

javascript - HighCharts 隐藏图例中的系列名称

javascript - 如何让 ResponsiveSlides 幻灯片在 Internet Explorer 中运行?

javascript - 当任何 ajax 请求完成时触发事件

javascript - 多重赋值的目的 var x = this.x = function(){}?

javascript - 如何在 Mongoose/Mongodb 中创建查询以获取此 json?

javascript - JavaScript 中的对象字面量赋值后是否需要分号?

internet-explorer - 为什么 CSS 圆 Angular 代码不适用于 IE 浏览器

internet-explorer - CSS3 文本阴影在所有 IE 浏览器中扭曲/像素化(请参见屏幕截图)

javascript - mootools: new Element() - 无法在 IE 中使用