我正在做一个我大量使用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中,它工作得很好。它提醒了一个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'));)给出了一个空字符串 最后扔了一个Exception ......它说了一些关于子类别的东西 beeing null。
我对此总结的是解析的元素 正确地 在Firefox中,但在IE8中我只获得了标签和属性, 其他一切 完全错了(事实上,失踪了)。我的意思是,内心的内容 一切 回应的元素哪里消失了!
您可以使用的其他事实:此代码:
alert(cat.get('tag')); resulted in
Firefox: category
IE8: /category <-----------(?)
嗯还有什么...
哦,是的...你看到上面评论的那条线(cat = $(cat);
)是
某物
我试图解决这个问题。我在IE浏览器需要的mootools Docs中读到
明确地打电话
元素上的$
函数可以获得所有Element-magic ......但是这个
没有解决任何问题。
我非常绝望......我甚至用mootools.js
代码
好的,所以...... 我想要你,亲爱的mootool-pro是帮助我解决这个问题, 因为我真的需要网络在IE8中运行,事实上我选择了 mootools忘记了兼容性问题...
ps:如果事情不明确,请问!我很感激任何帮助:D
答案 0 :(得分:1)
我之前使用jQuery遇到了类似的问题。问题是,在IE中,传入的响应数据需要由Microsoft.XMLDOM
ActiveX对象处理。
一般步骤是:
实例化ActiveX对象。
var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
将传入的响应数据传递给它并加载它。
oXmlDoc.loadXML(sXmlResponseData);
根据需要解析它。
您可以查看完整分辨率here。