2011-12-18 48 views
2

這是我的場景:如何重定向POST表單提交,就像它最初提交給其他頁面一樣?

我有一個頁面從用戶收集某些數據。 我想有一個用戶可以點擊的按鈕,我希望這個按鈕可以做兩件事。 a)將數據記錄到我的數據庫中。
b)將用戶重定向到PayPal進行付款。

我目前的想法是創建一箇中間的「處理程序」頁面,它將執行a),然後將瀏覽器重定向到b)。

問題是:我該怎麼做b)? (這是JS和ASP的組合嗎?)
我希望它的行爲就像數據收集頁面直接向PayPal執行POST一樣,但如果這不可行,我歡迎其他建議來實現我的場景。

我使用的後端技術是ASP.NET。

+1

你保存數據後,您可以使用Response.Redirect的一些價值,這將有助於你成功的PayPal支付和回發到您以後識別重定向用戶,檢查樣品在這裏HTTPS://cms.paypal。 com/us/cgi-bin /?cmd = _render-content&content_ID = developer/library_download_sdks – 2011-12-18 09:25:38

回答

3

一些更具體的谷歌搜索和測試後,制定出適合我的解決方案是使用代碼鏈接在這裏:

http://www.codeproject.com/KB/aspnet/ASP_NETRedirectAndPost.aspx

正如你可以看到... ...我們準備了POST形式是保存您發佈的數據的隱藏字段和腳本TA HTML表單g,它持有表單的提交操作..它將在回發後立即執行。

private static String PreparePOSTForm(string url, NameValueCollection data) 
{ 
    //Set a name for the form 
    string formID = "PostForm"; 
    //Build the form using the specified data to be posted. 
    StringBuilder f = new StringBuilder(); 
    f.Append("<form id=\"" + formID + "\" name=\"" + 
        formID + "\" action=\"" + url + 
        "\" method=\"POST\">"); 

    foreach (string key in data) 
    { 
     f.Append("<input type=\"hidden\" name=\"" + key + 
         "\" value=\"" + data[key] + "\">"); 
    } 

    f.Append("</form>"); 
    //Build the JavaScript which will do the Posting operation. 
    StringBuilder s = new StringBuilder(); 
    s.Append("<script language="'javascript'">"); 
    s.Append("var v" + formID + " = document." + 
        formID + ";"); 
    s.Append("v" + formID + ".submit();"); 
    s.Append("</script>"); 
    //Return the form and the script concatenated. 
    //(The order is important, Form then JavaScript) 
    return f.ToString() + s.ToString(); 
} 
+0

編譯上面的表單,然後'Response.Clear(); Response.Write(html); Response.End();' – Pierre 2016-02-29 12:00:33

1

最簡單的方法是將此代碼放在後面。

只要在按鈕點擊的事件處理程序中做你的邏輯。

然後重定向使用

Response.Redirect 

我認爲你只是在創建自定義URL去到PayPal貝寶。

如果你想要做一個POST到另一個頁面,那麼你可以通過代碼做到這一點的背後還有

WebClient client = new WebClient(); 

client.Headers["Content-type"] = "application/x-www-form-urlencoded"; 

response = client.UploadString("http://www.paypal.com/somethingorother", 
           "parameter1=value1&parameter2=value2"); 
+0

Response.Redirect如何知道要發佈哪些數據,如果從未開始使用POST? – merlin2011 2011-12-18 10:05:36

+0

我正在使用帶有自定義POST的參數的標準PayPal URL。 – merlin2011 2011-12-18 10:07:10

+0

當你點擊一個按鈕時,你的代碼會有一個POST到你的服務器。這將包含您填寫的字段中的所有值。因此,Paramter1是表單中輸入字段之一的名稱,無論它被調用替換Parameter1,然後用該字段的值替換value1,如txtTextbox1.Text。如果您剛剛從Paypal複製並粘貼,則需要添加runat =「server」,併爲每個字段設置一個ID,或從頭開始創建自己的表單。 – 2011-12-18 12:44:22