我正在使用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中这个问题并不多。
我感谢任何意见!
答案 0 :(得分:0)
尝试告诉jQuery您正在加载HTML。根据我的经验,jQuery无法在Firefox中遍历XML。某些未知的特定条件可能会触发此行为。
$.get("example.xml", function(data) {
....
}, "html");
如果您的文档包含名称空间,则必须使用localName属性遍历文档:
if (this.localName === "c:tagname") {
....
}
如果文档不包含名称空间,则可以使用普通的jQuery功能导航文档:
if ($(this).is("tagname")) {
....
}
远非漂亮,但完成工作。至少在Firefox中。 :)