如何重定向POST表单提交,就好像它最初提交到另一个页面

本文关键字:提交 另一个 POST 重定向 表单提交 | 更新日期: 2023-09-27 18:18:24

我的场景如下:

我有一个页面收集来自用户的某些数据。我想要一个用户可以点击的按钮,我想要这个按钮做两件事。

a)记录数据到我的数据库。b)将用户重定向到Paypal进行支付。

我目前的想法是创建一个中间的"处理程序"页面,它将做a),然后将浏览器重定向到b)。

问题是:我实际上如何做b)?(是JS和ASP的结合吗?)
我希望它的行为就像数据收集页面直接向PayPal执行POST一样,但如果这是不可能的,我欢迎其他建议来实现我的场景。

我使用的后端技术是ASP.NET

如何重定向POST表单提交,就好像它最初提交到另一个页面

经过更具体的谷歌搜索和测试后,我的解决方案是使用链接在这里的代码:

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

如你所见…我们准备POST表单,这是一个HTML表单,它包含了您的POST数据的隐藏字段和一个脚本标签,它包含了表单的提交操作。它将在回发后立即执行。

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();
}

最简单的方法是在后面执行此代码。

只需在按钮单击的事件处理程序中执行逻辑。

然后使用

重定向到paypal
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");