使用 jQuery 和 AJAX 的跨域 PHP 调用

Posted

技术标签:

【中文标题】使用 jQuery 和 AJAX 的跨域 PHP 调用【英文标题】:Cross-domain PHP calls using jQuery and AJAX 【发布时间】:2011-03-05 23:14:04 【问题描述】:

我有一个问题,我使用的服务器未配置为允许 php 或 CGI,我需要使用从该服务器上的表单接收到的变量向所有者发送邮件,例如一般查询/反馈表单。

有谁知道我如何在另一个配置为使用 PHP 的域上调用一个简单的 PHP 文件,然后在该服务器上执行 mail() 函数,并将变量从我的非 PHP/CGI 服务器传递给它?

如何在源服务器未启用 PHP/CGI 的情况下启用跨域 AJAX 调用?

任何反馈/建议将不胜感激。

【问题讨论】:

【参考方案1】:

使用 JSONP 可能以某种方式可行,但您不需要 javascript。更简单的解决方案是将发送 PHP 脚本放在远程服务器上,例如

 www.serverwithphp.com/send.php

然后将反馈表直接指向该脚本:

 <form action="http://www.serverwithphp.com/send.php" ....>

并让send.php 在发送后将标头重定向回原始站点:

 header("Location: http://www.serverwithoutphp.com/thanks.htm");
 die();

【讨论】:

谢谢,我从来没有这样想过。我明天早上第一件事就试试。【参考方案2】:

在支持它的应用程序上,您可以使用JSONP

【讨论】:

以上是关于使用 jQuery 和 AJAX 的跨域 PHP 调用的主要内容,如果未能解决你的问题,请参考以下文章

Jquery:使用 laravel 的跨域 ajax 'POST'

如何避免 jquery ajax 中使用 wcf 服务的跨域策略?

带有 jquery.ajax() 的跨域“授权”标头

JQuery - $.ajax() - 使用 JSONP 的跨域 - 仅在 IE 8 中获取“解析器错误”(在 IE 7 中工作)

带有自定义标头的跨域 jquery ajax api 调用未命中服务器

具有自定义标头和请求正文作为 JSON 字符串的跨域 jquery ajax 请求