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

两个潜在的问题浮现在脑海中:

  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 调试起来很痛苦,因为它的调试工具非常有限。我检查了 FireFox 的 FireBug 插件,发现我的 WAMP 服务器的内容类型是“application/xml”。

内容类型=应用程序/xml

您还应该通过验证器运行 XML 文档来确保它是有效的。

于 2012-06-29T08:12:13.343 回答