XMLHttpRequest无法正常工作(空白页)

时间:2012-05-30 04:58:51

标签: javascript html xml xmlhttprequest

我从W3Schools复制了这段代码(连同原始的XML文件cd_catalog.xml),我得到一个空白页面:

<html>
<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","cd_catalog.xml",false);
    xmlhttp.send();
    xmlDoc=xmlhttp.responseXML;

    document.write("<table border='1'>");
    var x=xmlDoc.getElementsByTagName("CD");
    for (i=0;i<x.length;i++)
    {
        document.write("<tr><td>");
        document.write(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue);
        document.write("</td><td>");
        document.write(x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue);
        document.write("</td></tr>");
    }
    document.write("</table>");
</script>

</body>
</html>

我尝试过Opera,Firefox,IE和Chrome。 没有。 :(

2 个答案:

答案 0 :(得分:2)

由于您没有使用网络服务器,请尝试执行此操作:

xmlhttp.open("GET","file:///C:/cd_catalog.xml", false);

您可能最终需要Web服务器,因为浏览器不允许您的脚本访问本地文件,例如看这里的讨论: http://www.webdeveloper.com/forum/showthread.php?t=233306

因此,请考虑在您的计算机上设置简单的Web服务器,例如lighttpd

编辑:我解释规范(http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#the-open%28%29-method)的方式是必须通过HTTP完成。但这并不是绝对清楚的。在此上下文中可能不允许使用文件:因此期望上面的代码段可能不起作用,您需要 Web服务器。

相关问题是:

Read file:// URLs in IE XMLHttpRequest

Allow Google Chrome to use XMLHttpRequest to load a URL from a local file

答案 1 :(得分:2)

将您的代码上传到网络服务器。您将在所有浏览器(如IE,Chrome或Mozilla)上获得所需的输出。但是,如果您在本地计算机上尝试相同的代码,那么IE和Chrome将无法运行。