[英]Issues parsing XML with jQuery in IE6
我试图以跨浏览器兼容的方式使用jQuery从xml中提取值。 我在firefox中没有任何问题,但是不幸的是,这也必须与IE兼容。
我的jQuery代码如下所示:
$(document).ready(function()) {
$.get("file.xml", {}, function(parseRefreshTime){
alert('This line is executed in IE.');
$("created", parseRefreshTime).each(function() {
alert('This line is *not* executed in IE.');
refreshTime = $(this).text();
//do stuff with refreshtime
});
});
});
这将为我的xml文件中的<created>
节点提取节点值。
我在页面中引用了jQuery库,并且在Firefox中可以正确解析,因此我假设解析代码是适当的。 我在Firefox中收到两个警报,但在IE中只有第一个。
我可以发誓昨天我有非常相似的代码可以工作,但是我必须进行一些调整并以某种方式破坏了它。 与它战斗了近一个小时之后,我正在寻找另一组眼睛。
有人可以在这里发现我在做什么错吗?
一些东西:
xml
$(doc)
并使用find
查询XML reader
应该已经ready
并且您在括号中有一个额外的括号 这在IE6上对我有用。 如果这对您不起作用,则可能要调查您是否正确提供了xml。
index.html :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$.get("test.xml", null, function(doc) {
$(doc).find('created').each(function() {
alert($(this).text());
})
}, 'xml');
});
</script>
</head>
<body>
</body>
</html>
test.xml :
<?xml version="1.0" encoding="UTF-8"?>
<created>2010-01-07 00:00:00</created>
尝试用$()
包装parseRefreshTime
$("created", $(parseRefreshTime)).each(function() {
alert('This line is *not* executed in IE.');
refreshTime = $(this).text();
//do stuff with refreshtime
});
或尝试使用$(parseRefreshTime).find('created')
$(parseRefreshTime).find("created").each(function() {
alert('This line is *not* executed in IE.');
refreshTime = $(this).text();
//do stuff with refreshtime
});
更新:另外,尝试将type
指定为xml
。
$.get("file.xml", {}, <callback>, "xml")
确保将“ text / xml”用作xml文件的内容类型。
我正在使用这样的东西:
if ($.browser.msie){
var tempXML = new ActiveXObject("Microsoft.XMLDOM");
tempXML.async = false;
tempXML.loadXML(data);
xmlc = tempXML;
items = $($(xmlc)[0]);
} else if(window.DOMParser){
items = $(new DOMParser().parseFromString(data, "text/xml").childNodes[0]);
} else {
xmlc = data;
items = $($(xmlc)[1]);
}
基本上,尝试使用IE的Microsoft.XMLDOM方法。 您可以提供示例xml吗?
XML和IE6的最大难题之一就是字符编码。 确保您的浏览器可以正确解释文件。 与文档本身相比,您的网络服务器很可能为页面提供了不同的编码标头。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.