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

JQuery Ajax请求后后台RedirectToAction无页面跳转问题求解

问题根因

该现象是AJAX请求的固有特性导致的:当你通过AJAX向后端发请求时,后端返回的302重定向响应会被AJAX引擎自动跟随,也就是说浏览器会在后台请求你重定向的Index地址、拿到对应的页面HTML,但不会主动把当前页面替换成重定向后的页面,所以你看到当前页面没有变化,但后台Index的Action确实已经执行了。调整async参数完全不影响这个逻辑,自然没用。


解决方案1:后端返回跳转标识,前端手动跳转(推荐)

这个方案改动最小,适配AJAX的请求逻辑:

第一步:修改后端Post接口

不要返回RedirectToAction,改成返回JSON格式的结果,包含是否成功、提示信息、要跳转的地址:

[HttpPost]
public IActionResult CreateChecklistCopies([FromBody] object i_vm)
{
    var tmp = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ChecklistCopyModel>>(i_vm.ToString());
    int result = _obj.AddChecklistCopies(tmp);
    
    if (result > 0)
        return Json(new { Success = true, RedirectUrl = Url.Action("Index", new { SuccessMessage = "Checklists were successfully duplicated." }) });            
    else 
        return Json(new { Success = false, RedirectUrl = Url.Action("Index", new { ErrorMessage = "An error occurred when duplicating the checklist." }) });            
}

第二步:修改前端AJAX请求,添加success回调处理跳转

$.ajax({
    url: "CreateChecklistCopies",
    type: "POST",
    data: JSON.stringify(drivers),
    contentType: "application/json; charset=utf-8",  
    success: function(res) {
        // 拿到后端返回的跳转地址,手动触发页面跳转
        window.location.href = res.RedirectUrl;
    }          
});

解决方案2:改用表单提交而非AJAX

如果你的场景不需要异步提交的特性,直接用普通的表单提交数据,浏览器会自动处理302重定向,页面自然会跳转到Index页,不需要额外写JS逻辑。

内容的提问来源于stack exchange,提问作者d00d

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:39:04