Javascript 远程提交表单,本地确认

Javascript 远程提交表单,本地确认,javascript,php,jquery,forms,Javascript,Php,Jquery,Forms,我们有一个表单,网站用户可以在我们的网站上填写。表单提交到另一个站点并由其处理。但是,当用户提交表单时,我想从我们自己的站点显示一个简单的确认页面 不幸的是,我无法访问远程站点的代码,也无法指定本地确认页面 以下是流的外观: 1名用户在我们的网站上填写表格并单击提交 2将表单信息发送到远程站点 3在我们的网站上向用户显示一个简单的感谢页面。它不需要显示或确认任何提交的数据 我曾想过创建一个php脚本并提交它,该脚本只需将查询字符串传递到远程站点,然后显示我们的本地感谢页面。我怀疑这可能很简单,但

我们有一个表单,网站用户可以在我们的网站上填写。表单提交到另一个站点并由其处理。但是,当用户提交表单时,我想从我们自己的站点显示一个简单的确认页面

不幸的是,我无法访问远程站点的代码,也无法指定本地确认页面

以下是流的外观:

1名用户在我们的网站上填写表格并单击提交

2将表单信息发送到远程站点

3在我们的网站上向用户显示一个简单的感谢页面。它不需要显示或确认任何提交的数据

我曾想过创建一个php脚本并提交它,该脚本只需将查询字符串传递到远程站点,然后显示我们的本地感谢页面。我怀疑这可能很简单,但我是一个php新手,不知道怎么做

有人知道这是否可能吗?要完成这样的任务,代码是什么?还是我错过了一条更好的路


我完全被卡住了,非常感谢您提供的任何帮助。

因为您无法控制远程站点,也无法控制其输出。这表明在提交发件人后,您无法选择将请求重定向到何处,因此将表单重定向到远程站点将不是一个解决方案。除非远程站点具有回调机制,您可以在提交表单(如paypal)后设置重定向回哪个url

因此,您可以使用将数据发送到远程站点,而无需将用户重定向到任何位置,并且在提交AJAX请求后,您可以查看发送给用户的感谢消息。但是,除非远程站点输出特定文本或消息,否则您无法知道远程站点是否已成功接收表单

因此,一种方法是使用AJAX,下面是一个带有JQuery的AJAX示例

 //Using JSONP if the remote site supports it
$.ajax({
  dataType: 'jsonp',
  data: 'id=10',
  jsonp: 'jsonp_callback',//false? 
  url: 'http://www.google.com'
}).always(function () {alert("Thank you ... ");} );
如果远程域支持JSONP,您可以直接向其发送请求,但仅限于获取请求

如果您现在从浏览器控制台运行该代码,您将收到消息。但这并不保证远程站点已经收到它,这就是为什么消息总是在函数中,而不是在“完成”或“成功”中,因为它将返回整个远程站点页面


请注意,将ajax请求发送到不同于发送者的站点是一个安全问题,因此您可以尝试使用不同的方法,例如将数据发送到您的站点,然后使用一些php提取数据并将其传递到远程站点

我认为您必须使用Curl,请参见我的示例

<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://www.w3schools.com/PHP/welcome.php' );

curl_setopt($ch, CURLOPT_POST, TRUE);//Instruct cURL to do a regular HTTP POST

//Specify the data which is to be posted
$post_data['name'] = 'xyz';
$post_data['email'] = 'value';

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);


curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);// Tell curl_exec to return the response output as a string

// Execute the cURL session

$response = curl_exec($ch );

// Close cURL session and file

curl_close($ch );

echo $response; 
?>

提交后,远程站点是否向您提供任何反馈?使用情况如何?表单确实会显示其自己的确认屏幕,但它是为远程站点标记的。这就是为什么我们想使用我们自己的确认页面,这样就不会让用户感到困惑。我们不需要从远程站点返回任何信息。当用户提交表单时,如何调用ajax来执行?将要发送的信息传递到“data”参数中。这里有一些例子