我使用$ .parseXML()和更多版本的IE8有问题。它在IE8和Chrome以及Firefox中都运行得非常好。请看下面给出的代码。
Jquery的:
var result = data.d;
var obj = decodeBase64(result);
var xmlDoc = $.parseXML(obj);
XML返回:
<?xml version="1.0"?>
<ArrayOfMultiLineItemJson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema
MultiLineItemJson>
<Order_Number>PAAAA00017</Order_Number>
<Order_Item>01</Order_Item>
<Order_Subitem>0001</Order_Subitem>
<Order_Type>PO</Order_Type>
</MultiLineItemJson>
</ArrayOfMultiLineItemJson>
IE9中的错误消息
Unhandled exception at line 490, column 3 in http://localhost:55005/resources/js/jquery-1.9.0.js
0x800a139e - Microsoft JScript runtime error: Invalid XML:
<?xml version="1.0"?><ArrayOfMultiLineItemJson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><MultiLineItemJson><Order_Number>PAAAA00017</Order_Number><Order_Item>01</Order_Item></ArrayOfMultiLineItemJson>
先谢谢
答案 0 :(得分:1)
提供错误的代码可以追溯到jquery库代码
// Cross-browser xml parsing
parseXML: function( data ) {
var xml, tmp;
if ( !data || typeof data !== "string" ) {
return null;
}
try {
if ( window.DOMParser ) { // Standard
tmp = new DOMParser();
xml = tmp.parseFromString( data , "text/xml" );
} else { // IE
xml = new ActiveXObject( "Microsoft.XMLDOM" );
xml.async = "false";
xml.loadXML( data );
}
} catch( e ) {
xml = undefined;
}
if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
jQuery.error( "Invalid XML: " + data );
}
return xml;
},
后来的浏览器即9,10返回window.DOMParser和DOMParser();对象,因此代码进入非ie部分。 但是,即8没有定义DOMParser(),因此它会抛出错误。
修复将添加ie8特定测试以及if(window.DOMParser) 如果有帮助,请告诉我
答案 1 :(得分:0)
必须将此作为答案,因为它不适合评论。我无法在Windows机器上重现这一点。
js code:
$.get("test.txt", function (data) {
console.log(data);
//var obj = decodeBase64(result);
var xmlDoc = $.parseXML(data);
console.log(xmlDoc);
});
的xml:
<?xml version="1.0"?>
<ArrayOfMultiLineItemJson
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MultiLineItemJson>
<Order_Number>PAAAA00017</Order_Number>
<Order_Item>01</Order_Item>
<Order_Subitem>0001</Order_Subitem>
<Order_Type>PO</Order_Type>
</MultiLineItemJson>
</ArrayOfMultiLineItemJson>
test.txt的响应标头:Content-Type text/plain
将test.txt
重命名为test.xml
时,我会获得内容类型text/xml
,并且我需要从中获取文档对象的所有代码:
$.get("test.xml", function (xmlDoc) {
console.log(xmlDoc);
});
当使用您发布的无效XML时,它也不会在FF中工作,因为我在那里收到错误。
我没有使用decodeBase64
也许您应该在没有它的情况下进行测试,或者在console.log中测试它返回的文本(console.log(obj))。在IE中按F12打开开发人员工具,控制台应位于“脚本”选项卡下