2014-02-25 62 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; 
?>