如何在控制器's动作方法中重定向Ajax Post ?

本文关键字:方法 重定向 Ajax Post 控制器 | 更新日期: 2023-09-27 17:50:34

我有一个Ajax POST被发送到我的控制器之一。例如

查询>索引

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

当我做登录检查,我做一个if语句,如果activeUser的会话令牌是空的,我做一个

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

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

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

如何在控制器's动作方法中重定向Ajax Post ?

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;

你可以这样做:

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

在Controller中,在JSON中返回true或false。然后在AJAX成功时,如果为true,则设置窗口。

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

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

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