$ .parseXML()在大于IE 8的IE版本中不起作用 [英] $.parseXML() is not working in versions of IE greater than IE 8

查看:143
本文介绍了$ .parseXML()在大于IE 8的IE版本中不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用$ .parseXML()和更多版本的IE8时出现问题.它在IE8和chrome以及Firefox中都可以正常工作.请看下面给出的代码.

I have a issue using $.parseXML() with more version of IE8. Its working absolutely fine in IE8 and chrome as well as Firefox. Please have a look on below given code.

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>

预先感谢

推荐答案

出现错误的代码可以追溯到jquery库代码

the code that gives error can be traced to the jquery library code

// 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();对象,因此代码进入non-ie part. 但是ie 8没有定义DOMParser(),因此会引发错误.

the later browsers ie 9,10 return window.DOMParser and the DOMParser(); object , and thus the code enters non-ie part . But ie 8 does not have DOMParser() defined , hence it throws error.

此修复程序将添加ie8特定测试以及if(window.DOMParser) 让我知道是否有帮助

the fix would be add ie8 specific test alongwith if ( window.DOMParser ) Let me know if that helps

这篇关于$ .parseXML()在大于IE 8的IE版本中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆