JQuery没有在IE上循环遍历XML

时间:2012-12-31 19:33:39

标签: jquery xml internet-explorer

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

2 个答案:

答案 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及以下默认情况下没有控制台对象

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