2011-01-04 50 views
2

Ajax呼び出しの成功後、別のページにリダイレクトする方法について多くの回答がありましたが、すべてがGETメソッドを使用しています。 代わりに、私のパラメータをPOSTメソッドを使って新しいページに渡したいと思います。 どうすればいいですか?POSTを使用したAjaxリダイレクト

+0

パラメータはPOSTリクエストにGETリクエストのように格納されないため、パラメータを別の方法で渡す必要があります。 – Eugene

+0

申し訳ありませんが、明確にするために、現在のページをAJAXのない新しいURLにリダイレクトするかどうか、通常はブラウザでフォームを送信するか、元のAJAX POSTを使用して新しいURLに301恒久リダイレクトレスポンスの場合、別のAJAX POST(GETではなく)? – jamiebarrow

答えて

1

POSTリクエストを行うようにブラウザをプログラムで設定することはできません。XMLHTTPRequestのみをプログラムで設定することはできません。

var params = {name: 'lonesomeday', website: 'stackoverflow'}; 

var form = document.createElement('form'); 
form.action = 'http://example.com'; 
form.method = 'post'; 

for (var key in params) { 
    if (params.hasOwnProperty(key) { 
     var field = document.createElement('input'); 
     field.type = 'hidden'; 
     field.name = key; 
     field.value = params[key] 

     form.appendChild(field); 
    } 
} 

document.body.appendChild(form); 
form.submit(); 
+0

あなたはXMLHttpRequestを使ってPOSTリクエストメソッドでリクエストを送ることができます...私はサブミットするために新しいフォームを作成することは過剰ですか? – jamiebarrow

+0

@ jamiebarrow私はその反対を主張するだろう。 1つのHTTPリクエストで操作全体を行うことができるときにURLを取得するためだけに、XMLHTTPRequest全体を実行することは過度の作業です。 – lonesomeday

+0

昨日、私はこれを別に読みました。私は、AJAX POST(jQuery.ajaxを使用)をレスポンスが301永久リダイレクトのURLにするとき、ライブラリは新しい場所へのGETリクエストを実行するという問題がありました。しかし、私のシナリオでは、AJAX経由で新しいURLへのPOSTを行い、通常は現在のページを新しいURLにリダイレクトしてはいけません。これをもう一度読んだら、O.P.は、通常のAJAX POSTを行った後にページをリダイレクトする方法を尋ねているようです。私は混乱してしまいました。 :) – jamiebarrow

2

まあ、私は前にこの問題に直面していると、これを行うための唯一の方法はそう:あなたができる最善のは、その上にsubmitを呼び出し、その後、あなたが提出したいデータを新しいform要素を作成することによって、それをシミュレートしています(たぶん私は間違っている)AJAXの成功コールバック関数を定義し、そのコールバック関数からリダイレクトすることです。必要に応じて、AJAXレスポンスでリダイレクトURL自体を返信し、コールバック関数でリダイレクトURLを読み取ることができます。

関連する問題