以下在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>
答案 0 :(得分:3)
首先,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());
});
});
}
答案 1 :(得分:2)
可能是因为console.log()
由于IE 8
及以下默认情况下没有控制台对象
您需要打开开发人员工具才能使其工作或创建新的控制台对象。