0

次のコードはFirefoxで正常に機能しますが、他の多くのものと同様に、Internet Explorer(すべてのバージョン)で機能させることはできません。

誰か助けてもらえますか?

<body>
   <script type="text/javascript">
        if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
        else
            {// code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
        xmlhttp.open("GET","messages.xml",false);
        xmlhttp.send();
        xmlDoc=xmlhttp.responseXML;

        var x=xmlDoc.getElementsByTagName("entry");
        for (i=0;i<x.length;i++)
            {
                document.write("<b>From:</b> ");
                document.write(x[i].getElementsByTagName("username")[0].childNodes[0].nodeValue);
                document.write("<br />");
                document.write("<b>Date:</b> ");
                document.write(x[i].getElementsByTagName("date")[0].childNodes[0].nodeValue);
                document.write("<br />");
                document.write("<b>Message:</b> ");
                document.write(x[i].getElementsByTagName("message")[0].childNodes[0].nodeValue);
                document.write("<br />");
                document.write("<br />");

            }
    </script>

</body>
4

1 に答える 1

1

2つの潜在的な問題が思い浮かびます。

  1. おそらく、AJAX通信が失敗しています。その場合は、 JQueryなどのライブラリを使用して通信を処理することを強くお勧めします。そうすれば、ブラウザの互換性の問題について心配する必要はありません

  2. 次に、サーバーから返されるデータはで送信されませんcontent-type("application/xml")。コンテンツタイプを確実に検出できず、期待しているXMLであることがわからない場合、ブラウザが異なれば動作も異なる可能性があります。

[編集]

これは私がIE7でテストした完全に機能する例です

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
   <title></title>
 </head>
 <body>
    <script type="text/javascript">
         if (window.XMLHttpRequest)
             {// code for IE7+, Firefox, Chrome, Opera, Safari
                 xmlhttp=new XMLHttpRequest();
             }
         else
             {// code for IE6, IE5
                 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
             }
         xmlhttp.open("GET","messages.xml",false);
         xmlhttp.send();
         xmlDoc=xmlhttp.responseXML;

         var x=xmlDoc.getElementsByTagName("entry");
         for (i=0;i<x.length;i++)
             {
                 document.write("<b>From:</b> ");
                 document.write(x[i].getElementsByTagName("username")[0].childNodes[0].nodeValue);
                 document.write("<br />");
                 document.write("<b>Date:</b> ");
                 document.write(x[i].getElementsByTagName("date")[0].childNodes[0].nodeValue);
                 document.write("<br />");
                 document.write("<b>Message:</b> ");
                 document.write(x[i].getElementsByTagName("message")[0].childNodes[0].nodeValue);
                 document.write("<br />");
                 document.write("<br />");

             }
     </script>

     <div>Hi</div>

</body>
</html>

messages.xmlそして、私のサーバーのルートにもあるテストデータ

<?xml version="1.0"?>
<root>
    <entry>
        <username>A</username>
        <date>B</date>
        <message>C</message>
    </entry>
</root>

これにより、次の出力が生成されます

From: A
Date: B
Message: C

Hi

IEのデバッグツールは非常に限られているため、IEはデバッグが面倒です。FireFoxのFireBugアドオンをチェックして、WAMPサーバーのコンテンツタイプが「application/xml」であることを確認しました。

content-type = application / xml

また、バリデーターを介して実行することにより、XMLドキュメントが有効であることを確認する必要があります。

于 2012-06-29T08:12:13.343 に答える