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

使用Yajra DataTables展示MySQL数据时遇405 Method Not Allowed错误

解决Yajra DataTables GET (405) Method Not Allowed错误

问题根源

路由定义为POST请求,但Yajra DataTables在serverSide模式下默认发送GET请求,导致请求方法不匹配,触发405错误。同时代码存在两处细节问题需要修正。

修复步骤

  • 调整请求方法匹配
    有两种可选方案:

    1. 修改路由为GET(符合DataTables默认行为)
      Route::get('/services/recieve', [serviceController::class,'ajaxservice'])->name('service.ajaxservice');
      
    2. 若必须使用POST,修改DataTables的ajax配置指定请求方法
      在Blade视图的DataTables初始化代码中,将ajax配置改为对象形式:
      $('#service').DataTable({
          processing: true,
          serverSide: true,
          ajax: {
              url: "{{ route('service.ajaxservice') }}",
              type: 'POST'
          },
          columns: [
              {data: 'id'},
              {data: 'service'},
          ]
      });
      
  • 修正控制器的AJAX判断
    原代码中$request->ajax是错误写法,需调用方法$request->ajax();同时serverSide模式下不要直接用all()获取全部数据,应传入查询构建器让DataTables自动处理分页、排序逻辑:

    public function ajaxservice(Request $request){
        $serviceQuery = servicesModel::query();
    
        if($request->ajax()){
            return DataTables::of($serviceQuery)->make(true); 
        }
        // 非AJAX请求可返回对应视图
        return view('services.index');
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:11:51