我有一个ASP.Net MVC视图,它将表单数据提交给控制器操作。我正在尝试使用jQuery通过AJAX调用发布表单,如下所示:
$("#submit").click(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "/controller/action",
data: $("#form").serialize()
});
});
这很好用,表单数据就像我想要的那样发布到控制器。问题是控制器操作返回重定向,并且在提交表单后,浏览器不会重定向到重定向响应中指定的URL的位置。使用Fiddler,我可以看到控制器确实返回了重定向,并且为重定向指定的位置发出了请求,但浏览器从未实际重定向,在单击处理程序运行后仍然显示表单页面。
我尝试在设置$.ajax
的{{1}}调用中添加成功处理程序。然而,由于几个原因,它似乎不太理想。首先,因为我不知道如何在成功处理程序中获取重定向位置,所以我必须对位置进行硬编码。其次,在成功处理程序中执行重定向实际上会导致向重定向位置发出两个请求。我想知道是否有更好的方法来获得window.location
调用以兑现服务器返回的重定向。
答案 0 :(得分:0)
AJAX请求获得重定向。
您可以让您的AJAX请求返回重定向网址(而不是发送300 Location
),然后在AJAX成功处理程序中重定向到该网址。