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

PHP项目使用Yajra Datatables后可读取数据库但POST新增/更新操作报错

错误原因分析
  • 核心报错1:POST请求http://localhost/dashboard_new/public/addPackage返回404,说明服务端没有匹配到该POST请求对应的路由,常见诱因包括路由未定义、路由请求方法不匹配、路由大小写拼写不一致、CSRF令牌缺失导致请求被中间件拦截后跳转至不存在路径。
  • 核心报错2:Uncaught TypeError: Cannot read properties of undefined (reading 'errors')是因为请求返回404时,响应内容不是JSON格式,xhr.responseJSON为undefined,直接读取其下的errors属性触发报错。
  • 额外代码问题:编辑逻辑中$("status").val(data[0].status)、var idRow = $("id").val()两处选择器书写错误,缺少ID选择器标识#,无法正常获取对应表单元素的值。
可行解决方案
  1. 排查路由配置
    执行Laravel命令php artisan route:list,检查以下内容:
  • 是否存在POST类型、URI为addPackage的路由,注意路由拼写、大小写必须和请求地址完全一致
  • 确认更新操作的路由是否已设置名称->name('updatepackage'),和代码中{{route('updatepackage')}}调用匹配
  1. 补充CSRF令牌校验
    Laravel默认要求所有POST请求携带CSRF令牌,否则会拦截请求:
  • 在页面<head>标签中添加CSRF元标签:
<meta name="csrf-token" content="{{ csrf_token() }}">
  • 给所有POST类型的AJAX请求添加请求头:
$.ajax({
    url: "你的请求地址",
    type: "POST",
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    // 其余配置保持不变
})
  1. 统一路径写法
    避免硬编码请求路径,所有请求地址统一使用Laravel辅助函数生成,例如addPackage的请求地址改为{{ route('addPackage') }}(需先给对应路由设置名称)或{{ url('addPackage') }}。
    建议配置本地开发环境的虚拟主机,将站点根目录指向项目的public文件夹,既可以消除路径中需要带/public的问题,也能提升项目安全性。

  2. 修复JS错误兼容逻辑
    修改AJAX的error回调,增加非JSON响应的兼容判断:

error: function (xhr, status, error) {
    if(xhr.responseJSON && xhr.responseJSON.errors) {
        $.each(xhr.responseJSON.errors,function(key,item) {
            $('#form_submit_error').modal('show');
            setTimeout(function() {$('#form_submit_error').modal('hide');}, 2000);
        })
    } else {
        console.log('请求异常:', error);
        alert('操作失败,请稍后重试');
    }
}
  1. 修正选择器错误
    将两处错误的选择器补充#标识:
// 原代码 $("status").val(data[0].status); 改为:
$("#status").val(data[0].status);
// 原代码 var idRow = $("id").val(); 改为:
var idRow = $("#id").val();

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

相关产品推荐
方舟 Agent Plan

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

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