1

我遇到了情况,需要帮助。我正在尝试使用 jquery ajax 方法读取 xml 文件的内容,如下所示:

$.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>

在 Chrome/Firefox 上的结果:

在此处输入图像描述

IE 上的结果:

在此处输入图像描述

4

2 回答 2

0

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

于 2013-05-16T14:17:21.237 回答
0

它对我不起作用的原因是在旧版本的 jQuery 中,XMLHttpRequest 的字段 responseXML 被评估为 XML 响应。较新的版本似乎总是使用 DOMParser 来解析原始响应,这在响应响应期间有时会引发异常,即使 XMLHttpRequest 的 responseXML 字段中有一个有效的 dom 树也是如此。由于字符编码问题,可能会引发异常,但是如果 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 树,而 DOMParser 无法解析原始响应。IE10 似乎解决了这个问题 - IE9 是否使用两个不同的 xml 解析器 (resonseXML!=DOMParser)?- 奇怪的...

于 2013-04-16T09:01:42.283 回答