2013-04-02 78 views
1

我遇到了一种情况,需要帮助。我试图使用jQuery AJAX方法如下读取XML文件的内容:Jquery XML Parse不适用于IE

$.ajax({ 
type: "GET", 
url: "Resources/languageResource.xml", 
dataType: "xml", 
success: function(xml) { 
    $(xml).find(lang).each(function(){ 
     var title=$(this).find('title').text(); 
     var loginBoxHeader1=$(this).find('loginBoxHeader1').text(); 
     var loginBoxHeader2=$(this).find('loginBoxHeader2').text(); 
     var username=$(this).find('username').text(); 
     var password=$(this).find('password').text(); 
     var submit=$(this).find('LoginBtn').text(); 
     var RememberCheckbox=$(this).find('RememberCheckbox').text(); 

     document.getElementById('titleId').innerText = title; 
     document.getElementById('h1Id').innerHTML = title; 
     document.getElementById('loginBoxHeader1').innerHTML = loginBoxHeader1; 
     document.getElementById('loginBoxHeader2').innerHTML = loginBoxHeader2; 
     document.getElementById('username').innerHTML = username; 
     document.getElementById('password').innerHTML = password; 
     document.getElementById('submit').innerHTML = submit; 
     document.getElementById('RememberCheckbox').innerHTML = RememberCheckbox; 
    }); 
} 

});

这在Firefox和Chrome中很适用,但不适用于IE。什么不见​​了?

Internet Explorer的版本是9.

下面是XML文件的结构:上铬/火狐

<xml> 
<English> 
    <title>Welcome to ******* System</title> 
    <loginBoxHeader1>Login Panel - </loginBoxHeader1> 
    <loginBoxHeader2>Please provide following credentials!</loginBoxHeader2> 
    <username>Username:</username> 
    <password>Password:</password> 
    <LoginBtn>Log in</LoginBtn> 
    <RememberCheckbox>Remember my login on this computer</RememberCheckbox> 
</English> 

<Spanish> 
    <title>********************************</title> 
    <loginBoxHeader1>Login Panel -</loginBoxHeader1> 
    <loginBoxHeader2>Por favor, proporcione las credenciales siguientes!</loginBoxHeader2> 
    <username>Nombre de Usuario:</username> 
    <password>Contraseña:</password> 
    <LoginBtn>iniciar la sesión</LoginBtn> 
    <RememberCheckbox>Recordar mi usuario en este equipo</RememberCheckbox> 
</Spanish> 

</xml> 

结果:上IE

enter image description here

结果:

enter image description here

+0

可能是你可以看看http://www.newmediafun.com/2009/07/parsing-xml -with-jquery-in-internet-explorer /和http://stackoverflow.com/questions/4998324/jquery-find-and-xml-does-not-work-in-ie – Saqlain

+0

它是否无法在某些特定的工作值得一提的方式?我们无法自己发现,因为我们甚至不知道XML是什么样的。 –

+0

xml文件在firefox和chrome中正确读取,但不适用于IE。我现在添加了xml文件内容,但我认为jquery代码需要通过使其适用于IE来解决。 – Azeem

回答

0

它不适用于我的原因是,在jQuery的旧版本中,XMLHttpRequest的字段responseXML针对XML响应进行了评估。新版本似乎总是需要DOMParser来解析原始响应,即使在响应暂停期间发生异常,即使XMLHttpRequest的responseXML字段中存在vaild dom树。唯一的例外是propably抛出由于字符编码问题,但是如果那么responseXML确实包含一个DOM树就可以解决此问题:

var xhr; 

$.ajax({ 
    type: "GET", 
    url: "Resources/languageResource.xml", 
    dataType: "xml", 
    xhr: function() { 
     xhr = $.ajaxSettings.xhr(); 
     return xhr; 
    }, 
    success: onSuccess, 
    error: function(status, msg) { 
     if (status.status == 200) { 
     var xml = xhr.responseXML; 
     if (xml && xml.documentElement) { 
      onSuccess(xml); 
     } 
     } else { 
      // error handling 
     } 
    } 
}); 

function onSuccess(xml) { 
    // parsed xml tree 
    // ... 
} 

奇怪的是但是,responseXML的包含DOM树,whilest的的DOMParser不能够解析原始响应。这个问题似乎与IE10修复 - IE9使用两个不同的XML解析器(resonseXML!= DOMParser)? - 奇怪......

0

在这种情况下,帮我重置所有设置IE (Internet Options -> Advanced -> Reset)