提交表单远程,确认本地

时间:2014-02-25 18:00:45

标签: javascript php jquery forms

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

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

这是流程的样子:

1)用户填写我们网站上的表格并点击提交。

2)表格信息被发送到远程站点

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

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

有人知道这是否可行?代码是什么才能完成这样的事情?还是有更好的方式让我错过了?

我完全陷入困境,感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:0)

由于您无法控制远程站点,也无法控制其输出。这表示在提交from之后您无法选择重定向请求的位置,因此将表单重定向到远程站点将不是解决方案。 (除非远程站点有回调机制,您可以设置在提交表单后重定向到哪个URL,例如paypal)

因此,您可以使用AJAXwhat is ajax)将数据发送到远程站点,而无需将用户重定向到任何地方,并且一旦提交了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,您可以直接向其发送请求,但它仅限于GET请求。

如果您现在从浏览器控制台运行该代码,您将收到消息。但这并不能保证远程站点已收到它,这就是消息在always功能中,而不是donesuccess的原因,因为它将返回整个远程站点页面。

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

答案 1 :(得分:0)

我认为你必须使用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; 
?>