【问题标题】:How do I do a redirect an Ajax Post in a Controller's Action Method?如何在控制器的操作方法中重定向 Ajax 帖子?
【发布时间】:2015-08-06 13:09:22
【问题描述】:

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

查询 > 索引。

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

在进行登录检查时,我会执行一个 if 语句,如果 activeUser 的会话令牌为空,我会执行一个

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

但是,这并没有正确重定向,而是以 JSON 格式返回浏览器抱怨的结果。

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

【问题讨论】:

  • 您需要在 ajax 成功回调中完成重定向
  • ajax 调用的全部意义在于保持在同一页面上。他们不重定向。

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


【解决方案1】:
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;

【讨论】:

  • 但是假设我们也想传递一些数据。如何做到这一点。我的意思是除了“url”之外,我们也想传递一些数据。
  • 只需传递 Json 格式的数据,如 data: { text : "hello"}。
  • 我的意思是说我想将数据传递给重定向的页面。我的意思是在成功发布之后。我想将一些数据传递给 window.location.href 页面
  • 您可以通过附加到url来传递数据。
【解决方案2】:

你可以这样做:

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

希望这可以清除您想要的想法。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-09
        • 1970-01-01
        • 2013-06-20
        • 1970-01-01
        • 1970-01-01
        • 2015-01-03
        • 2021-11-21
        • 2015-04-11
        相关资源
        最近更新 更多