【问题标题】:Jquery xml parse errorJquery xml解析错误
【发布时间】:2013-06-10 19:28:53
【问题描述】:

我正在使用 ajax 下载有关 Sharepoint 2010 搜索(数据包查询)的 xml。 但是问题是当我尝试使用 jquery 遍历 xml 时。

$(document).ready(function() {
    String.prototype.endsWith = function(suffix) {
        return this.indexOf(suffix, this.length - suffix.length) !== -1;
    };

    var timeout = null;
    $('#SearchInputBox').on('keyup', function () {
        var text = $(this).val();
        if (timeout !== null) {
            clearTimeout(timeout);
        }
        timeout = setTimeout(function () {
            $('#LoadImage').show();
            DoSearch(text);
        }, 1000);
    });
});

function searchComplete(xData, status) {
    $('#LoadImage').hide();
    var search_results = $("#result");
    search_results.html('');

    $(xData.responseXML).find("QueryResult").each(function() {
        var err;
        try {
            var obj = $(this).eq(0);

            var text = obj.text(); // works in Firefox and Chrome but not IE9
            //var text = obj.text;
            //var text = obj.xml;

            var x = $("<xml>" + text + "</xml>");
            var docs = x.find("LinkUrl");
            var len = docs.length;
            var link;

            for(var i=0; i<len; i+=1) {
                link = $(docs[i]).text();
                if (link.toLowerCase().endsWith(".pdf")) {
                    search_results.append(link + "<br/>");
                }
            }
        } catch(err) {
            search_results.text("An error occured: " + err);
        }
    });
}

在这段代码中,我检索了 xml 数据,然后尝试在浏览器上显示它。这适用于 Firefox 和 chrome,但不适用于 IE9。我需要它在 IE9 中工作。

它在.text() 方法上失败,如果我尝试.html() 它也在那里失败。

我认为 .text() 方法可能会发生一些特定于浏览器的事情,或者我可能需要使用 http://api.jquery.com/jQuery.parseXML/ 解析 xml。

有谁知道如何解决这个问题?

谢谢。

【问题讨论】:

    标签: javascript jquery xml xml-parsing cross-browser


    【解决方案1】:

    正如您在问题中所说,您需要将其解析为 XML,而不是 HTML。
    致电$.parseXML

    【讨论】:

    【解决方案2】:

    鉴于您已经在使用 jQuery,为什么不直接使用 jQuery.ajax() 来发出请求?它将有助于解决许多跨浏览器的不一致问题,并且 jQuery 将对响应类型进行“智能猜测”并自动为您解析它。您也可以使用 dataType 选项指定它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 2012-05-20
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多