如何在外部域使用jQuery AJAX?

我试图使用.get()或.post()执行简单的jQuery AJAX尝试。

如果我的服务器上有本地副本,请执行以下操作:

$.get('/hash.php',...,...) 

我在我的控制台中使用firebug监视获取已完成并得到响应。

我改变的只是外部服务器的URI,没有任何反应。

 $.get('https://secure.mysite.com/subdir/hash.php',...,...) 

如果我关闭’s’或者我使用post而没有帮助。 我错过了一些我应该在jQuery中使用的参数吗?

编辑:我忘了提到我这样做的原因是因为我最终从PHP4站点迁移到PHP5站点,但是现在PHP4站点需要一个不在PHP4中的function。 所以我打电话给PHP5服务器来做。 我想我有一个很好的解决方法。 谢谢!

您不能将Ajax请求发送到除部署应用程序的其他域之外的其他域。 这是因为在web-browers中实现了同源策略 – 一种安全措施。

但是,有两种可能的解决方案:

  • 将请求发送到您自己的服务器,该服务器将充当另一个服务器的代理(通过PHP脚本,或者更好,使用Apache的一些mod_proxy_http模块)
  • 或不使用“Ajax”,但其他技术,如动态创建标签 - 不受SOP约束。

由于浏览器的原因,您通常无法在域外执行Ajax。 但是,使用JSONP可以做到这一点。 jQuery现在还有一个用于Ajax的jsonp参数。 要完成这项工作,您需要控制服务器的输出。

Javascript无法访问javascript文件来自之外的服务器。

这是一个安全function。

根据您希望获得的浏览器特定方式,您可以解决这个问题,但这会变得有点滑坡。

您不能直接跨域ajax请求,这将是一个安全问题。

您将需要从jquery调用本地php文件并让php文件与其他域通信。

有一个名为JSONP的方法用于规避它。 请参阅SO#570100的第二个回复