2011-12-18 7 views
2

ここに私のシナリオです:POSTフォームが最初に別のページに送信されたかのように、どのようにリダイレクトするのですか?

私は、ユーザーから特定のデータを収集する1つのページを持っています。 ユーザーがクリックできるボタンが1つありたいと思っています。このボタンには2つの操作が必要です。

a)データベースにデータを記録します。
b)支払いを行うには、ユーザーをPaypalにリダイレクトします。

私の現在の考えは、a)を行い、b)にブラウザをリダイレクトする中間の "ハンドラ"ページを作成することです。

質問は:どのように私は実際にb)を行うのですか? (JSとASPの組み合わせですか?)
私は、データ収集ページがPayPalへのPOSTを直接実行したように振る舞いますが、それが不可能な場合は、シナリオ。

私が使用しているバックエンド技術はASP.NETです。

+1

あなたがデータを保存した後、あなたはここで、いくつかのあなたはあなたに成功したPayPal支払いとポストバック後に識別するのに役立ちます値、検査サンプルとのResponse.Redirectを使用してユーザーをリダイレクトすることができます。https://cms.paypalを。 com/us/cgi-bin /?cmd = _render-content&content_ID = developer/library_download_sdks –

答えて

3

いくつかのより具体的なグーグルとテストの後、私のために働いたソリューションを使用することだったの後ろにコードを経由して、これを行うことができますここにリンクされたコード:

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

あなたが見ることができるように...私たちはあなたのポストされたデータとスクリプトTAの隠しフィールドを保持しているHTMLフォームでPOSTフォームを準備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

1

最も簡単な方法は、このコードを後で行うことです。

ボタンクリックのイベントハンドラでロジックを実行するだけです。

は、その後、私はあなただけPayPalに行くためにカスタムURLを作成していると仮定し

Response.Redirect 

を使用して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を開始することがなかった場合、どのデータをPOSTにするのですか? – merlin2011

+0

私はカスタムのPOSTされたパラメータで標準のPayPal URLを使用しています。 – merlin2011

+0

ボタンをクリックすると、あなたのコードにあなたのサーバーへのPOSTがあります。これは、入力したフィールドのすべての値を含むものです。だから、Paramter1は、フォームの入力フィールドの1つの名前です。それが何であっても、それをParameter1に置き換えてから、value1をそのフィールドの値で置き換えます(txtTextbox1.Textなど)。 Paypalからコピーしてペーストした場合は、runat = "server"を追加し、各フィールドにIDを付けるか、独自のフォームを最初から作成する必要があります。 –

関連する問題