我正在做一个大量使用 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 对象处理。
一般步骤是:
实例化 ActiveX 对象。
var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
将传入的响应数据传递给它并加载它。
oXmlDoc.loadXML(sXmlResponseData);
根据需要解析它。
您可以查看完整分辨率here .
关于javascript - 如何使用mootools在IE8中接收XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1601873/