2010-10-21 74 views
0

我想发布到一个外部的php文件并得到结果。它是我在我的服务器上托管的一个php。我想通过ajax在我的localhost发布静态页面,并在div中加载html。但我无法做到这一点。Jquery Post to external php

$.post("http://www.site.com/index.php", { font: "panchami", input: "hi" }); 

这里有什么不对吗?

+0

1)没有回调函数。 2)AJAX跨源(阅读:张贴到另一台服务器)仍然没有广泛支持 – Harmen 2010-10-21 13:49:11

回答

2

Javascript doesn't allow cross domain requests.

你可以做的是你的服务器reads the contents of the other site上的PHP文件:

<?php echo file_get_contents($_REQUEST['url']); ?> 

然后做出请求你的文件,如下所示:

$.post("proxy.php?url=external_url", ...); 
+0

PHP代理方法是一个非常有吸引力的方法,但请注意,显示的代码可能被误用为通用代理,这是不好的。您需要构建一些安全措施,例如检查“REFERER”或可能的目标URL的有限列表 – 2010-10-21 13:52:59

3

Same Origin Policy阻止对外部域的Ajax调用。

流行的解决方法包括

  • JSONP
  • 嵌入数据在iframe代替
  • 使用服务器端代理抓取网页(见@ BrunoLM的回答一个PHP的例子,它是可能的在任何服务器端语言)
  • YUI在@亚历克斯的答案显示的Get

取决于你的用例是什么。

0

这种请求是危险的,它被称为跨站点请求,并被大多数浏览器禁止。如果你看看你的错误控制台,你应该看到一个消息。

如果你真的没有其他选择,那么你可以考虑使用iframes,src属性可以在当前域之外,你可以使用javascript解析信息。

希望帮助:)