2014-02-25 100 views
1

我们有一个表格,该网站的用户可以填写我们的网站。表单提交并由另一个网站处理。不过,当用户提交表单时,我想从我们自己的网站上显示一个简单的确认页面。提交表格远程,确认当地

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

这里的流程是什么样子:

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

2)形式的信息发送到显示在我们的网站给用户的页面远程站点

3)一个简单的“谢谢你”。它不需要显示或确认任何提交的数据。

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

有谁知道这是可能的吗?代码将如何完成这样的事情?还是有更好的方式,我错过了?

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

+1

是否远程站点给你提交之后的任何反馈? – srquinn

+0

如何使用[Ajax](https://api.jquery.com/jQuery.ajax/)? – Styphon

+0

表单确实显示自己的确认屏幕,但是它的品牌是远程网站。这就是为什么我们要使用我们自己的确认页面(所以它不会混淆用户)。我们不需要从远程站点返回的任何信息。 – user3348435

回答

0

由于您无法控制远程站点,也无法控制它的输出。这表明您在提交from之后无法选择重定向请求的位置,因此将表单重定向到远程站点不是解决方案。 (除非拥有远程站点回拨机制,在这里你可以设置哪些URL提交表单如贝宝后回重定向),而无需

因此,你可以使用AJAXwhat is ajax)发送数据到远程站点用户重定向到任何地方,并且一旦提交了AJAX请求,您就可以查看向用户发送的感谢消息。但是,您无法知道远程站点是否已成功接收表单(除非它们输出某个文本或消息!)

因此,一种方法是使用AJAX,这里是AJAX与JQuery的示例。

//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提取数据和将它传递给远程站点。

+0

如何在用户提交表单时调用ajax? – user3348435

+0

您将要发送到“数据”参数的信息传递给您。这里有一些例子http://stackoverflow.com/questions/5004233/jquery-ajax-post-example-with-php – MJoraid

0

我认为你必须使用卷曲,看到我的样品例如

<?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; 
?>