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

模态弹窗视图引用jQuery脚本后POST请求跳转异常求助

解决引入jQuery后POST请求跳转到JSON页面的问题

这问题我之前碰到过好几次,核心原因是引入jQuery后,你的表单提交行为被悄悄改变了——大概率是chosen.js或者你自己的代码默认把表单提交变成了AJAX请求,导致后端返回的重定向响应被当成JSON数据直接渲染,而不是触发浏览器跳转。下面给你几个针对性的解决思路:

  • 强制表单使用普通提交模式
    如果是ASP.NET MVC项目,你可以在生成表单时添加data-ajax="false"属性,直接禁用AJAX提交行为,让浏览器按传统方式处理表单:

    @using (Html.BeginForm("Save", "YourController", FormMethod.Post, new { data_ajax = false }))
    {
        // 表单内容及chosen下拉框
    }
    

    纯HTML表单的话,直接手动加属性即可:

    <form action="/YourController/Save" method="post" data-ajax="false">
        <!-- 表单元素 -->
    </form>
    
  • 修正AJAX提交后的跳转逻辑
    如果你确实需要保留AJAX提交(比如要做表单验证提示),那就要在后端和前端配合处理重定向:

    1. 后端修改返回逻辑,检测AJAX请求时返回重定向URL的JSON:
      [HttpPost]
      public ActionResult Save(YourModel model)
      {
          // 数据保存逻辑...
          if (Request.IsAjaxRequest())
          {
              return Json(new { redirectUrl = Url.Action("Index") });
          }
          return RedirectToAction("Index");
      }
      
    2. 前端在表单提交的AJAX回调里手动触发跳转:
      $('form').submit(function(e) {
          e.preventDefault();
          var form = $(this);
          $.post(form.attr('action'), form.serialize(), function(response) {
              if (response.redirectUrl) {
                  window.location.href = response.redirectUrl;
              }
          });
      });
      
  • 检查chosen.js的初始化影响
    部分版本的chosen.js可能会对所在表单的提交事件做劫持,你可以在初始化chosen时,确保没有意外阻止默认提交:

    $(".chosen-select").chosen({
        placeholder_text_single: "请选择",
        // 你的其他配置
    }).off('submit'); // 移除可能绑定的submit事件监听
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:57:31