以下内容在 Chrome 和 Firefox 中运行良好,但在 IE 中不起作用。它正在 IE 中获取数据(我可以在控制台中看到它) - 但它没有循环通过 .each
:
function searchServing(which,choice){
var url = "search.asp?" + which + "=" + choice;
$.get(url, function(data){
console.log("data" + data);
$.each($(data).find("company"),function(index, el) {
loc = $(this).find('Location').text();
console.log("loc: "+ loc);
});
})//$.get(url, function(data){
.error(function() {
})//.error(function() {
.success(function(data) {
$.each($('company',data),function(index, el) {
loc = $(this).find('Location').text();
console.log("location: "+ loc);
}
}
}
XML 的格式如下:
<company>
<sql><%=sSQL%></sql>
<uid><%=uid%></uid>
<companyName><%=company%></companyName>
<location><%=location%></location>
<phone1><%=phone1%></phone1>
<phone2><%=phone2%></phone2>
<phone3><%=tollfree%></phone3>
<serving><%=serving%></serving>
</company>
最佳答案
首先,IE 并不总是喜欢 console.log,所以删除它。
其次,如果标记名是小写的,则在尝试查找它时使用小写字母。
第三,使用var
关键字,并且不要在循环内将变量声明为全局变量。
最后但并非最不重要的一点是,XML 应该使用 $.parseXML
进行解析,如下所示:
function searchServing(which, choice) {
var url = "search.asp?" + which + "=" + choice,
loc = []; //use array if iterating several values
$.get(url, function(xml) {
var xmlDoc = $.parseXML(xml),
$xml = $(xmlDoc);
$.each($xml.find("company"), function(index, el) {
loc.push($(el).find('location').text());
});
});
}
关于JQuery 不循环浏览 IE 上的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14105434/