如何重定向POST表单提交,就好像它最初提交到另一个页面
本文关键字:提交 另一个 POST 重定向 表单提交 | 更新日期: 2023-09-27 18:18:24
我的场景如下:
我有一个页面收集来自用户的某些数据。我想要一个用户可以点击的按钮,我想要这个按钮做两件事。
a)记录数据到我的数据库。b)将用户重定向到Paypal进行支付。
我目前的想法是创建一个中间的"处理程序"页面,它将做a),然后将浏览器重定向到b)。
问题是:我实际上如何做b)?(是JS和ASP的结合吗?)
我希望它的行为就像数据收集页面直接向PayPal执行POST一样,但如果这是不可能的,我欢迎其他建议来实现我的场景。
我使用的后端技术是ASP.NET
经过更具体的谷歌搜索和测试后,我的解决方案是使用链接在这里的代码:
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();
}
最简单的方法是在后面执行此代码。
只需在按钮单击的事件处理程序中执行逻辑。
然后使用
重定向到paypalResponse.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¶meter2=value2");