我是jQuery的新手,并且我遇到了跨浏览器的不一致问题。我试图使用jQuery填充HTML下拉来解析XML文档。最后,我将使用HTTP调用交换XML文档,但是现在,我正在进行本地XML副本的GET。我的方法适用于Firefox(下拉列表中显示2个元素),但IE7并未根据需要处理XML。 IE7似乎根本不解析XML 这是我的片段:
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<script src="jquery-1.3.2.js"></script>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script>
$(document).ready(function() {
$.ajax({
type: "GET",
url: "data.xml",
dataType: ($.browser.msie) ? "text/xml" : "xml",
success: function(xml) {
var select = $('#aoi');
$(xml).find('area').each(function() {
var name = $(this).find('name').text();
var type = $(this).find('type').text();
//alert(name + " : " + type);
select.append("<option>" + name + " : " + type + "</option>");
});
select.children(":first").text("please make a selection").attr("selected", true);
}
});
});
</script>
</head>
<body>
<form id="form1" method="post" >
<table border=".1" cellpadding="7" cellspacing="1" align="center" width="600" style="border-collapse: collapse;">
<tr>
<td>Shape</td>
<td>
<select id="aoi">
<option>loading</option>
</select>
</td>
</tr>
</table>
</form>
</body>
</html>
XML文件(data.xml)是:
<?xml version="1.0" encoding="ISO-8859-1"?>
<areasofinterest>
<area id="1">
<id>1</id>
<name>square</name>
<type>UserDefined</type>
</area>
<area id="2">
<id>2</id>
<name>small square</name>
<type>UserDefined</type>
</area>
</areasofinterest>
感谢您的帮助!
答案 0 :(得分:2)
我已经使用以下函数为IE加载xml。
function load_xml(msg)
{ //this function will load xml even used in IE or any other browser
if ( typeof msg == 'string') {
data = new ActiveXObject( 'Microsoft.XMLDOM');
data.async = false;
data.loadXML( msg);
} else {
data = msg;
}
return data;
}
$(document).ready(function() {
$.ajax({
type: "GET",
url: "data.xml",
dataType: ($.browser.msie) ? "text/xml" : "xml",
success: function(xml) {
*//call the function here and pass the xml document to it*
var xml2=load_xml(xml);
var select = $('#aoi');
$(xml2).find('area').each(function() {
var name = $(this).find('name').text();
var type = $(this).find('type').text();
//alert(name + " : " + type);
select.append("<option>" + name + " : " + type + "</option>");
});
select.children(":first").text("please make a selection").attr("selected", true);
}
});
});
答案 1 :(得分:0)
您是否尝试将dataType: ($.browser.msie) ? "text/xml" : "xml",
替换为dataType: "xml"
?
dataType
是jQuery的提示......我在代码库中看不到使用text/xml
的任何内容......无论浏览器是什么,它都应该是xml
!