2011-12-18 49 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