2016-01-19 36 views
0

我正在尝试使用XMLHttpRequest对象在JavaScript中做一个示例。我做了一个HTML文件,如下所示:铬中的XMLHttpRequest错误

<!DOCTYPE HTML> 
<html> 
    <head> 
    <title> 
    AJAX simple example 
    </title> 
    </head> 
    <body> 
     <div id="mainContent"> 
      <h1>This is an AJAX example</h1> 
     </div> 
     <script src="script.js"></script> 
    </body> 
</html>` 

和我的剧本是这样的:

//simple AJAX example: 
var myRequest; 
if (window.XMLHttpRequest) { 
    myRequest = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
    myRequest = new ActuveXObject("Microsoft.XMLHTTP"); 
} 
myRequst.onreadystatechange = function(){ 
    console.log(myRequest.readyState); 
    if(myRequest.readyState === 4){ 
     var p = document.createElement("p"); 
     var text = document.createTextNode(myRequest.responseText); 
     p.appendChild(text); 
     document.getElementById("mainContent").appendChild(p); 
    } 
}; 

myRequest.open("GET", "source.txt", true); 
myRequest.send(null); 

我一直在Chrome打开HTML文件时,得到一个错误,我得到在控制台下面的错误:

XMLHttpRequest无法加载文件:.../ajaxRequestExample/source.txt。协议方案仅支持交叉源请求:http,data,chrome,chrome-extension,https,chrome-extension-resource。

+1

从'http://'而不是'file:///'运行它。还有可以使用的chrome标志,但对于更实际的测试,强烈建议使用简单的HTTP。如果你有python,那么你可以用一个命令行来启动一个内置的。 – dandavis

+0

你应该使用一些服务器来通过'ajax'从那里获取任何内容。即使你做了一些实验,这也是一个很好的做法。 –

+0

我想,@ dandavis试图建议你从**本地主机**运行你的文件..再加上,使用**微型AJAX **而不是https://code.google.com/p/microajax/ – ymz

回答

0

Chrome认为您请求的资源来自与自身服务器不同的域。你的代码看起来不错,但似乎你没有在后端运行服务器。 你的ajax应该与一个服务器交谈,该服务器将'服务'你的'source.txt'。

所以,也许你可以尝试运行侦听http://localhost

一个服务器,然后再次尝试您的脚本。

0

这是一个cross-domain-policy的问题,而不是铬只问题。但是,当涉及到从本地mozilla加载文件的时候,firefox是一个你需要的限制较少的文件。如果您想要进一步开发以不同域名的http请求加载文件,您也可以检查my question