2011-03-29 58 views
9

我正在尝试执行ajax请求以获取在Windows Wamp服务器上运行"http://localhost/"的内容。来自本地文件系统的jQuery Ajax请求(Windows文件:///)

剧本是从运行的东西像这样:

file:///C:/my/path/index.html

我只是用一个标准的$就请求,试图让本地主机的内容:

$.ajax({ 
      type: 'GET', 
      url: 'http://localhost/', 
      success: function(data) { 
      alert('success'); 
      }, error: function (data) { 
      alert('failed'); 
      } 
    }); 

我不能让它成功,虽然...似乎是本地文件系统或某事的一些问题。我不太确定。

+0

试试'/'为url,然后试试'/ index.html' – 2011-03-29 07:54:28

+0

不可以,这两者都不能工作 – Emmanuel 2011-03-29 08:04:34

+0

你能直接访问url吗?你在js控制台中遇到错误吗? – 2011-03-29 08:06:16

回答

15

问题解决了!

我只是有这个头添加到我的index.php文件http://localhost/

header('Access-Control-Allow-Origin: *');

感谢您的帮助反正家伙!

+0

嗨Emmanual,我和你一样。但是我没有任何服务器代码,我使用了数据库代理服务器dbmojo [link](code.google.com/p/dbmojo/)。我的脚本位于本地file://目录中。现在我怎么能把头('访问控制 - 允许 - 原产地:*'); ?还是有其他解决方案吗? – iEamin 2012-10-14 03:08:02

+0

@iEamin我不太确定你的情况......也许可以通过你的apache(.htaccess)或其他服务器配置文件添加标题“Access-Control-Allow-Origin”?我不确定。我不知道另一种做这种跨服务器/协议请求的方式。 – Emmanuel 2012-10-16 08:28:43

3

这可能不起作用,因为浏览器会认为这是一个跨域请求。您已通过file:// URL访问该文件,但正尝试从http://localhost检索数据。尝试从http://localhost以及访问您的原始文件,它可能会开始工作。

+0

是的,从http:// localhost访问它很好。但基本上我正在试图用file:///脚本来做的是通过发送ajax请求并检查结果来检测wampserver是否正在运行。 – Emmanuel 2011-03-29 08:05:49

+0

@Emmanuel - 你上面的代码显示了你使用的URL,但在这里你说你正在使用文件路径。这是什么? – 2011-03-29 08:08:10

+1

@adam - ajax请求从file:///等运行...并尝试获取url http://:localhost /'的内容。无论如何,请参阅下面的我的答案... – Emmanuel 2011-03-29 08:17:36

11

您说该脚本正在从file:/// URL运行。最好不要从file网址做AJAX请求,因为它们的处理方式不一致。例如,Chrome完全禁止它们。

但是,您在这里遇到的更大问题是同源策略:您只能向网页本身发出对同一主机的AJAX请求。 file:///http://localhost都是不是是同一台主机(即使它们是同一台机器)。

最好是运行一切关闭http://localhost

+2

不幸的是,我认为你是对的:(。可能对安全有好处,但在我的情况下很糟糕。 – Emmanuel 2011-03-29 08:06:10