【问题标题】:Jquery Post to external phpJquery Post 到外部 php
【发布时间】:2011-04-28 15:13:36
【问题描述】:

我想发布到一个外部 php 文件并得到结果。它是我在线托管在我的服务器中的 php。我希望通过 ajax 在我的本地主机帖子中的静态页面并将 html 加载到 div 中。但我无法做到这一点。

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

这有什么问题吗?

【问题讨论】:

  • 1) 没有回调函数。 2) AJAX 跨域(阅读:将内容发布到另一台服务器)仍未得到广泛支持

标签: php jquery ajax post


【解决方案1】:

Same Origin Policy 防止 Ajax 调用外部域。

流行的解决方法包括

  • JSONP
  • 将数据嵌入到 iframe
  • 使用服务器端代理进行获取(请参阅@BrunoLM 的 PHP 示例答案;可以使用任何服务器端语言)
  • YUI 的Get 如@Alex 的回答所示

取决于您的用例。

【讨论】:

    【解决方案2】:

    Javascript doesn't allow cross domain requests.

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

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

    然后向您的文件发出请求,如下所示:

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

    【讨论】:

    • PHP 代理方法是一种非常有吸引力的方法,但请注意,显示的代码可能被误用作通用代理,这很糟糕。您将需要建立一些安全措施,例如检查REFERER 或可能的目标 URL 的有限列表
    【解决方案3】:

    或者使用GET,例如:

    http://developer.yahoo.com/yui/get/

    【讨论】:

      【解决方案4】:

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

      如果实在没办法,可以考虑使用iframe,src属性可以在当前域之外,可以使用javascript解析信息。

      希望有帮助:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-21
        • 1970-01-01
        • 2018-06-08
        • 2012-04-10
        • 2014-03-17
        • 2019-01-22
        • 2014-02-13
        • 1970-01-01
        相关资源
        最近更新 更多