JQuery在非服务器环境下解析XML的折中解决方案[转]
这2个代码在本地硬盘上运行都有问题:
<script type="text/javascript">
$(function() {
$.get('f.xml',function(data) {
alert(data);//ok
$('entry',data).each(function() {
alert('find');
});
});
});
</script>
$(document).ready(function() {
$.get("d.xml",function(xml){
alert($('/controls/control', xml).text());
});
});
d.xml
<?xml version="1.0" encoding="UTF-8"?>
<controls>
<control>aaaaa</control>
</controls>
我开始不知道怎么回事,于是去了官方论坛上与Learning JQuery的作者以及Jquery官方开发人员讨论了一下。
他们开始也没有给出解决方案。但是有一个Mike找到了表面原因,那就是:
在本地硬盘上运行不了(非服务器环境下运行都运行不了),放在服务器上运行就可以。
深层次分析不知道为什么。
很感谢这个Mike。
我研究了一会儿,搞定了临时折中的解决方案,分享给大家:
$(document).ready(function() {
$.get("d.xml",function(xml){
var xmlDoc=null;
if ($.browser.msie)
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.loadXML(xml);
}
else
{
var parser = new DOMParser();
var xmlDoc= parser.parseFromString(xml, "text/xml");
}
alert($('/controls/control', xmlDoc).text());
});
});
</script>