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

Laravel 8结合Ajax无刷新插入数据提交后返回JSON无交互问题排查

问题根因

直接返回JSON响应的核心原因是表单默认的同步提交行为没有被阻止,Ajax代码根本没有执行,浏览器直接按表单默认规则发起同步POST请求,最终直接展示后端返回的JSON内容。

具体修复步骤
  • 修正submit事件的逻辑错误
    你原来的判断if (! e.preventDefault())完全不符合规范:e.preventDefault()的返回值为undefined,取反后逻辑判断异常,且没有正确阻止表单默认提交,同时事件绑定对象错误、拼写也有问题,直接替换为以下代码即可:
$('#modal-form form').validator().on('submit', function (e) {
    //  validator验证不通过时直接终止
    if (e.isDefaultPrevented()) {
        return;
    }
    // 强制阻止表单默认同步提交
    e.preventDefault();
    $.ajax({
        url: $(this).attr('action'),
        type: 'post',
        data: $(this).serialize()
    })
    .done((response)=>{
        $('#modal-form').modal('hide');
        table.ajax.reload();
        // 可选加成功提示:alert(response)
    })
    .fail((errors)=>{
        alert('Tidak dapat menyimpan data');
        return;
    });
});
  • 给提交按钮明确指定type属性
    为了避免不同浏览器对按钮默认类型的兼容问题,给保存按钮加上明确的type="submit"属性:
<button type="submit" class="btn btn-sm btn-flat btn-primary"><i class="fa fa-save"></i> Simpan</button>
  • 检查依赖引入顺序
    确保页面按顺序引入了jQuery、Bootstrap JS、jQuery Validator、DataTables JS,所有依赖jQuery的代码必须放在jQuery引入语句之后。
  • 验证路由配置
    确认调用addForm方法时传入的URL对应Laravel定义的kategori.storePOST路由,没有被其他路由规则拦截。
可选优化

后端可以返回结构化的JSON数据,方便前端做更灵活的交互判断:

public function store(Request $request)
{
    $kategori = new Kategori();
    $kategori->nama_kategori = $request->nama_kategori;
    $kategori->save();

    return response()->json([
        'code' => 200,
        'message' => 'Data berhasil disimpan'
    ], 200);
}

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

相关产品推荐
方舟 Agent Plan

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

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