我正在提交一个使用 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”。数据是“”。尽管表单正在保存,但响应是空的,并且没有设置响应标头。
请帮忙。