Javascript $.parseXML()在IE 8以上的版本中不起作用

Javascript $.parseXML()在IE 8以上的版本中不起作用,javascript,jquery,xml,internet-explorer,internet-explorer-8,Javascript,Jquery,Xml,Internet Explorer,Internet Explorer 8,我在IE8的更多版本中使用$.parseXML()时遇到问题。它在IE8、chrome和Firefox中工作得非常好。请看下面给出的代码 Jquery: var result = data.d; var obj = decodeBase64(result); var xmlDoc = $.parseXML(obj); <?xml version="1.0"?> <ArrayOfMultiLineItemJson xmlns:xs

我在IE8的更多版本中使用$.parseXML()时遇到问题。它在IE8、chrome和Firefox中工作得非常好。请看下面给出的代码

Jquery:

        var result = data.d;
        var obj = decodeBase64(result);
        var xmlDoc = $.parseXML(obj);
<?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>
XML返回:

        var result = data.d;
        var obj = decodeBase64(result);
        var xmlDoc = $.parseXML(obj);
<?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>


我必须把它写进一个答案中,因为它不适合评论。我无法在windows计算机上复制此内容

js代码:

    $.get("test.txt", function (data) {
        console.log(data);
        //var obj = decodeBase64(result);
        var xmlDoc = $.parseXML(data);
        console.log(xmlDoc);
    });
xml:

当使用您发布的无效XML时,它在FF中也不起作用,因为我在FF中遇到了一个错误


我没有使用
decodeBase64
也许您应该在没有它的情况下进行测试,或者在console.log中记录它返回的文本(console.log(obj))。在IE中按F12键打开开发者工具,控制台应该在脚本选项卡下,因为它不适合注释,所以必须将其放入答案中。我无法在windows计算机上复制此内容

js代码:

    $.get("test.txt", function (data) {
        console.log(data);
        //var obj = decodeBase64(result);
        var xmlDoc = $.parseXML(data);
        console.log(xmlDoc);
    });
xml:

当使用您发布的无效XML时,它在FF中也不起作用,因为我在FF中遇到了一个错误


我没有使用
decodeBase64
也许您应该在没有它的情况下进行测试,或者在console.log中记录它返回的文本(console.log(obj))。在IE中按F12键打开开发者工具,控制台应该在脚本选项卡下

给出错误的代码可以追溯到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;
},
更高版本的浏览器ie 9,10返回window.DOMParser和DOMParser();对象,因此代码进入非ie部分。 但是ie 8没有定义DOMParser(),因此它会抛出错误

修复方法是添加ie8特定测试和if(window.DOMParser)
让我知道这是否有帮助

给出错误的代码可以追溯到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;
},
更高版本的浏览器ie 9,10返回window.DOMParser和DOMParser();对象,因此代码进入非ie部分。 但是ie 8没有定义DOMParser(),因此它会抛出错误

修复方法是添加ie8特定测试和if(window.DOMParser)
让我知道这是否有帮助

您使用的jQuery的哪个版本的
result的值是多少?我看到这个文件名为1.9.0,所以如果它真的是1.9.0,应该不会有问题,但是jQuery 2不支持IE 8@Arun:谢谢你的回复。结果是返回xml,正如我在question@HMR:使用jquery 1.9.0,IE8可以正常工作,而不是IE9。您发布的xml格式不正确,但会在Firefox控制台中引起警告(我使用firebug)。正在检查IE
result
jQuery的哪个版本的值是多少?我看到这个文件名为1.9.0,所以如果它真的是1.9.0,应该不会有问题,但是jQuery 2不支持IE 8@Arun:谢谢你的回复。结果是返回xml,正如我在question@HMR:使用jquery 1.9.0,IE8可以正常工作,而不是IE9。您发布的xml格式不正确,但会在Firefox控制台中引起警告(我使用firebug)。签入IE nowxml=tmp.parseFromString(数据,“text/xml”);部分捕获错误。这意味着xml的格式无效。但我不明白我的xml有什么问题???@RajaAshutoshNayak console.log您的xml并复制粘贴到新文件中。用任何浏览器打开该文件,它都会指出问题所在。您发布的xml在ArrayOfMultiLineItemJson标记中缺少
,并且缺少
xml=tmp.parseFromString(数据,“text/xml”);部分捕获错误。这意味着xml的格式无效。但我不明白我的xml有什么问题???@RajaAshutoshNayak console.log您的xml并复制粘贴到新文件中。用任何浏览器打开该文件,它都会指出问题所在。您发布的xml在ArrayOfMultiLineItemJson标记中缺少
,并且缺少