0

我有一个 ASP.Net MVC 视图,可将表单数据提交给控制器操作。我正在尝试使用 jQuery 通过 AJAX 调用发布表单,如下所示:

$("#submit").click(function(e) {
  e.preventDefault();
  $.ajax({                    
          type: "POST",
          url: "/controller/action",
          data: $("#form").serialize()
    });
  });

这很好用,表单数据就像我想要的那样发布到控制器。问题是控制器操作返回重定向,并且在提交表单后,浏览器不会重定向到重定向响应中指定的 url 的位置。使用 Fiddler,我可以看到控制器确实返回了重定向,并且针对重定向指定的位置发出了请求,但浏览器从未真正重定向,单击处理程序运行后仍显示表单页面。

我尝试将成功处理程序添加到设置的$.ajax调用中window.location。这可行,但是由于几个原因,它似乎不太理想。首先,由于我不知道如何在成功处理程序中获取重定向位置,因此我必须对该位置进行硬编码。其次,在成功处理程序中执行重定向实际上会导致向重定向位置发出两个请求。我想知道是否有更好的方法来$.ajax调用服务器返回的重定向。

4

1 回答 1

0

AJAX 请求获得重定向。

您可以让您的 AJAX 请求返回重定向 URL(而不是发送300 Location),然后在 AJAX 成功处理程序中重定向到该 URL。

于 2013-09-25T15:22:00.800 回答