You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AJAX调用控制器时RedirectToAction无法重定向问题求助

问题原因

AJAX请求是异步发起的,服务器返回的重定向响应(3xx状态码)只会被AJAX接收,不会自动触发浏览器页面跳转——这是AJAX的设计逻辑:它仅负责获取响应数据,而非控制页面导航。这就是为什么控制台和网络面板无报错,但页面没跳转的核心原因。

解决方案

方案一:控制器返回JSON,前端手动处理跳转

修改控制器,返回包含目标跳转URL的JSON数据,前端在AJAX成功回调中执行页面跳转:

控制器代码修改

[AllowAnonymous]
[HttpPost]
public ActionResult CancelAction(string cancelUrl)
{
    var isDevEnv = ConfigurationManager.AppSettings["IsDevEnvironment"];
    string redirectUrl;

    if (isDevEnv != null && isDevEnv.ToLower() == "true")
    {
        redirectUrl = Url.Action("Index", "Dashboard");
    }
    else
    {
        redirectUrl = cancelUrl;
    }

    return Json(new { redirectUrl = redirectUrl });
}

前端AJAX修改

添加成功回调,接收返回的URL并跳转:

function callCancelMethod(data) {
    $.ajax({
        type: "POST",
        url: "/Account/CancelAction",
        data: {
            ...data,
            __RequestVerificationToken: $('input[name="__RequestVerificationToken"]').val() // 补充防伪令牌,避免CSRF错误
        },
        success: function(response) {
            if (response.redirectUrl) {
                window.location.href = response.redirectUrl;
            }
        },
        error: function (xhr, status, error) {
            console.error("Error while making AJAX POST request: " + error);
        }
    });
}

$("#cancelButton").on("click", function () {
    callCancelMethod({ cancelUrl: cancelUrl });
});

页面需添加防伪令牌(在表单外或任意位置):

@Html.AntiForgeryToken()

方案二:改用表单提交(无需AJAX)

如果不需要异步处理逻辑,直接用表单提交更简单,浏览器会自动处理服务器返回的重定向:

页面添加隐藏表单

<form id="cancelForm" action="/Account/CancelAction" method="POST">
    @Html.AntiForgeryToken()
    <input type="hidden" id="cancelUrlInput" name="cancelUrl" value="" />
</form>

修改按钮点击事件

$("#cancelButton").on("click", function () {
    $("#cancelUrlInput").val(cancelUrl);
    $("#cancelForm").submit();
});

控制器代码无需修改,保持原重定向逻辑即可。

内容的提问来源于stack exchange,提问作者Dario Lucić

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 02:27:43