Laravel 10中Ajax GET请求路由找不到问题求助
Laravel 10 Ajax请求路由找不到问题解决
问题现象
使用Laravel 10结合AdminLTE DataTables发起Ajax GET请求时,控制台返回404错误,提示路由不存在。
相关代码
路由定义
Route::get('members', [MemberController::class, 'getmembers'])->name('member.getmembers');
控制器方法
public function getMembers(Request $request) { if ($request->ajax()) { $data = Member::where('active', '=', 'Y')->get(); return Datatables::of($data) ->addIndexColumn() ->addColumn('action', function($row){ $btn = '<a href="javascript:void(0)" class="edit btn btn-primary btn-sm">View</a>'; return $btn; }) ->rawColumns(['action']) ->make(true); } }
Blade视图代码
@php $config = [ 'processing' => true, 'serverSide' => true, 'ajax' => "{{ route('members.getmembers') }}", ]; @endphp <x-adminlte-datatable id="members" :heads=$heads head-theme="dark" striped hoverable with-button beautify :config=$config> </x-adminlte-datatable>
控制台错误信息
"message": "The route {{ route('member.getmembers') }} could not be found.", "exception": "Symfony\Component\HttpKernel\Exception\NotFoundHttpException", "file": "F:\XAMPP\htdocs\edparkadmin\vendor\laravel\framework\src\Illuminate\Routing\AbstractRouteCollection.php", "line": 44,
问题原因与修复方案
- 路由名称拼写错误:路由定义的名称是
member.getmembers,但视图中写成了members.getmembers(多了一个s),直接导致路由查找失败。 - Blade语法未被解析:在
@php代码块中,"{{ route(...) }}"会被当作普通字符串传递,Laravel不会解析其中的Blade语法,最终请求地址变成了{{ route('...') }}这个字面量,自然找不到对应路由。
修复后的视图代码
@php $config = [ 'processing' => true, 'serverSide' => true, 'ajax' => route('member.getmembers'), // 直接调用route函数,无需Blade语法包裹 ]; @endphp <x-adminlte-datatable id="members" :heads=$heads head-theme="dark" striped hoverable with-button beautify :config=$config> </x-adminlte-datatable>
额外检查步骤
- 确认
MemberController已在路由文件中正确引入 - 验证
Member模型存在且active字段定义正确 - 执行
php artisan route:clear清除路由缓存,避免缓存导致的路由不生效
内容的提问来源于stack exchange,提问作者Brendan
相关产品推荐
相关产品推荐

