1

以下在 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>
4

2 回答 2

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());
        });
    });
}​
于 2012-12-31T19:44:28.890 回答
2

可能是因为console.log()

AsIE 8和 under 默认没有控制台对象

您需要打开开发人员工具以使其工作或创建一个新的控制台对象。

于 2012-12-31T19:38:46.847 回答