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

私にとってうまくいかなかった理由は、古いバージョンの jQuery では、XMLHttpRequest のフィールド responseXML が XML 応答に対して評価されたためです。新しいバージョンでは、XMLHttpRequest の responseXML フィールドに有効な dom ツリーがある場合でも、生の応答を解析するために常に DOMParser が必要なようです。応答のパス中に例外がスローされることがあります。文字エンコーディングの問題が原因で例外がスローされる可能性がありますが、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 は 2 つの異なる xml パーサー (resonseXML!=DOMParser) を使用していますか? - 変...

于 2013-04-16T09:01:42.283 に答える