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

Ajax提交表单有重复日期校验仍提示提交成功该如何修复

问题原因

你当前的AJAX逻辑中,success回调仅在HTTP请求本身成功(比如返回200状态码)时就触发,不会识别后端业务层面的校验结果(比如日期重复、入库失败等业务异常),因此无论实际入库是否成功,都会弹出提交成功的提示。

修复方案

第一步:调整后端接口返回规则

后端处理完请求后,返回结构化的JSON格式数据,明确标识业务处理结果,示例返回结构如下:

  • 入库成功返回:{"code": 0, "msg": "提交成功"}
  • 日期重复入库失败返回:{"code": 1, "msg": "当前日期已有记录,提交失败"}

第二步:修改前端AJAX逻辑

调整回调函数,根据后端返回的业务状态展示对应提示,同时补充HTTP请求异常的捕获逻辑,修改后完整代码如下:

<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
$(function () {
  $('#my_form').on('submit', function (e) {
    e.preventDefault();
    $.ajax({
      type: 'POST',
      url: '/main/store',
      data: $('#my_form').serialize(),
      dataType: 'json', // 声明预期返回数据格式为JSON
      success: function (res) {
        if (res.code === 0) {
          // 业务处理成功,弹出成功提示
          alert('表单提交成功');
          // 可补充提交成功后的后续逻辑,比如重置表单
          // $('#my_form')[0].reset();
        } else {
          // 业务处理失败,弹出后端返回的错误提示
          alert(res.msg);
        }
      },
      // 捕获HTTP请求层面的异常,比如接口报错、网络中断等
      error: function () {
        alert('网络异常,提交失败,请稍后重试');
      }
    });
  });
});
</script>
</head>

如果你的后端习惯用非200的HTTP状态码来标识业务失败,只需要把业务错误的处理逻辑同步补充到error回调中即可。

内容的提问来源于stack exchange,提问作者Данил Самойленко

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:15:04