xmlHttp.send()方法的问题

时间:2011-06-23 01:49:08

标签: javascript html dom

我正在尝试加载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" 我所有的工作都在我的本地机器上。等级目录为jshtmlcssresources

1 个答案:

答案 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库来帮助每个人,而不是重新发明轮子。