我使用以下代码读取外部xml文件:
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","myxmlfile.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
但上述代码似乎仅适用于Firefox,而不适用于Chrome / IE / Opera。
在Chrome中我在控制台中收到错误,因为不允许跨域访问,但我的xml文件,js文件和html文件都在我本地硬盘中的同一文件夹中。
对此有何帮助?
感谢。
答案 0 :(得分:1)
您可能在没有http服务器的情况下在本地进行测试。
基本上,ajax请求必须使用相同的域,如果您向其他站点发出ajax请求,它将被浏览器阻止(这是一项安全功能,可防止人们从其他网站读取浏览器所有者的数据) 。大多数浏览器都以相同的方式阻止对本地文件系统的访问,以防止(例如)恶意电子邮件附件。您会收到类似XMLHttpRequest cannot load file:///path/to/your/data.html. Origin null is not allowed by Access-Control-Allow-Origin.
如果您使用的是Linux或Mac或安装了python,启动http服务器的最简单方法是在html文件的根目录中使用命令python -m SimpleHTTPServer
,那么您可以在http://localhost:8000/file.html
查看它们如果你在Windows上,那么你可能需要配置IIS(请记住,IIS默认情况下不支持某些文件扩展名,如.json
,因此您可能需要配置它。)
如果您仍然需要/需要在本地进行测试而不必使用http服务器,那么您可以使用--allow-file-access-from-files
运行Chrome(更新Chrome驱动程序的快捷方式或使用此开关从终端运行Chrome )。
答案 1 :(得分:0)
如上所述,您需要将文件放在http服务器上才能正确测试。您可以使用本地Apache实例来正确测试它。这样,您的ajax调用就不会被浏览器阻止。