Dojo の xhrpost を使用するために送信しています。私のアプリは ruby on rails で動作します。コントローラーでリダイレクトを実行しています。リダイレクトされた URL を応答ヘッダーに保存します。クライアントでリダイレクトされた URL にアクセスし、リダイレクトされた URL をクライアントにロードします。以下はコードです。
ビューでは、dojo.xhrpost を使用して ajax サブミットを実行します。
function () {
var form = dojo.byId("form_id");
dojo.connect(form, "onsubmit", function(event){
// Stop the submit event since we want to control form submission.
dojo.stopEvent(event);
var xhrArgs = {
form: dojo.byId("form_id"),
handleAs: "text",
load: function(data, ioargs){
//getting redirected url from response header
var new_url = ioargs.xhr.getResponseHeader("new_url");
//redirecting to the url
document.location.href = new_url;
},
error: function(response){
//handling error
}
}
//submitting for to action1 of controller
var deferred = dojo.xhrPost(xhrArgs);
});
}
コントローラー内のコード
def action1
new_url = url_for(:controller=>"controller", :action => "action2")
#passing the new URL as parameter in the redirection
redirect_to :action2, :new_url => new_url
end
def action2
#getting the new url from the params and saving it in respone header so that it can be accesses in client
response.headers["new_url"] = params[:new_url]
end
これは私のローカルホストでうまくいきました。しかし、サーバーに置くと失敗します。
ioargs.xhr.status が「0」になっています。データは「 」です。フォームは保存されていますが、応答は空で、応答ヘッダーは設定されていません。
助けてください。