如何在Controller的Action方法中重定向Ajax Post?

时间:2015-05-25 05:34:08

标签: c# jquery asp.net ajax asp.net-mvc

我有一个Ajax POST被发送到我的一个控制器。 e.g。

查询>索引。

在Index()Action中,我返回一个JSON的ActionResult。

当我正在进行登录检查时,我会执行if语句,如果activeUser的会话令牌为null,我会执行

return RedirectToAction("Index","Auth");

但是,这不是正确重定向,而是返回浏览器抱怨的JSON结果。

如何正确设置重定向,以便如果IF语句失败,它将转到登录页面,否则它将返回我需要的JSON结果?

4 个答案:

答案 0 :(得分:4)

return Json(new{data=true})

关于ajax成功方法

 $.ajax({
            type: 'POST',
            url: 'your url',
            data:your data
            success: function (data) {
                if (data) {
                    window.location.href="url";
                }
                else {
                     window.location.href="url";
                }
            },
            error: function (xhr, textStatus, errorThrown) {
                alert(errorThrown);
            }
        });
        return false;

答案 1 :(得分:1)

你可以这样做:

在两种情况下都返回JSON结果,只在条件为false时返回错误的JSON响应。这样,您的调用将返回到您视图上的AJAX,然后您可以检查那里的false值,如果匹配,您可以使用javascript重定向重定向到相应的视图。

希望这能清除你想要的想法。

答案 2 :(得分:1)

在Controller中,在JSON中返回true或false。然后在AJAX成功中,如果为true,则将window.location设置为新URL。

window.location = '@Url.Action("Index","Auth")';

答案 3 :(得分:0)

ajax请求的操作不会让您以这种方式重定向。

在您的错误情况下,您可以返回某种错误值,并在视图中的jQuery中处理此案例。这可能会重定向到错误页面,显示错误消息等。