2

我正在使用 JavaScript/jQuery 尝试解析通过 AJAX Get 请求获取的 XML 文档。我无法发布 XML 文档,但它格式正确,并且存在我正在寻找的标签。AJAX 请求成功并在 Chrome 和 Firefox 中返回了完整的 XML 文档——现在由于某种原因我无法解析它。该代码适用于 Chrome,但不适用于 Firefox 或 IE。我现在对 IE 并不感兴趣,但我不知道为什么它在 Firefox 中不起作用。

JavaScript:

window.onload = function getGroupSets() {
$.ajax( {
    type: "GET",
    dataType: "application/xml",
    url: '../api/indicatorGroupSets.xml',
    success: function( xml ) {

        /*Find Indicator Group Set tags in XML file */

        alert($(xml).find('indicatorGroupSet').length);
        //This alert reads '0' in Firefox, '4' in Chrome
        //The following function is not executed in Firefox:

        $( xml ).find( 'indicatorGroupSet' ).each( function( ) {

            /*For each Set, get the name & ID*/

            var groupSet = {
                name: $( this ).attr( 'name' ),
                id: $( this ).attr( 'id' )
            };
            alert(groupSet.name);
            //Nothing displays here
        } );
    },
    error: function( jqXHR, textStatus, errorThrown ) {

        /*If an error occurs, alert the issue and a message to users */

        alert( jqXHR + ':' + textStatus + ':' + errorThrown + '\nThere has been an error, please refresh the page or contact the site administrator if the problem persists.' );
    }
} );
}

我大部分时间都在寻找解决方案,但似乎一切都与解析器在 IE 中无法正常工作有关,在 Firefox 中这个问题并不多。

我很感激任何意见!

4

1 回答 1

0

尝试告诉 jQuery 你正在加载 HTML。根据我的经验,jQuery 无法在 Firefox 中遍历 XML。某些未知的特定条件可能会触发此行为。

$.get("example.xml", function(data) {
    ....
}, "html");

如果您的文档包含命名空间,则有必要使用 localName 属性遍历文档:

if (this.localName === "c:tagname") {
    ....
}

如果文档不包含命名空间,则可以使用普通的 jQuery 功能导航文档:

if ($(this).is("tagname")) {
    ....
}

远非漂亮,但可以完成工作。至少在 Firefox 中。:)

于 2012-10-03T16:07:16.723 回答