我正在尝试加载XML文件并获取其DOM对象。我认为错误在于此代码:
// Takes an XML document and loads it and returns a DOM of the document
function loadXMLDoc(filepath)
{
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", filepath, false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
return xmlDoc;
}
代码停止在xmlhttp.send()
执行。我收到以下错误消息:
XMLHttpRequest cannot load file://localhost/Users/Dylan/programming/projects/personalpage/resources/cool-data.xml. Cross origin requests are only supported for HTTP.
Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101
这会突出显示xmlhttp.send()
行。之前我有这个工作,我认为我没有对文件进行任何更改。我知道的唯一区别是我现在正在本地机器上执行此操作。在我使用在线托管的IDE(cloud9)之前,所有文件都在Web服务器上是远程的。此外,它适用于Windows,我现在在Mac上。
编辑:我用参数调用了函数:"../resources/items-data.xml"
我所有的工作都在我的本地机器上。等级目录为js
,html
,css
和resources
。
答案 0 :(得分:0)
您可以在本地使用XHR(在file:
来源),但有一个问题:Google Chrome和Firefox(我相信)会阻止您使用html文件访问同一目录中的文件以外的文件。那是
file://localhost/Users/Dylan/programming/projects/personalpage/index.htm
可以访问
file://localhost/Users/Dylan/programming/projects/personalpage/abc.xml
,或
file://localhost/Users/Dylan/programming/projects/personalpage/abc.json.js
但不是
file://localhost/Users/Dylan/programming/projects/personalpage/resources/cool-data.xml
,或
file://localhost/etc/passwd
此限制仅添加到最新版本中。我想这就是你没有找到的原因。
P.S。下一次,通过使用jQuery或其他Javascript库来帮助每个人,而不是重新发明轮子。