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

使用jQuery AJAX调用Laravel路由出现404错误的求助

排查PUT请求404错误的关键点

1. 路由前缀不匹配

从控制器代码里的return redirect()->route('admin.dataroom.index')能看出,你的数据室路由应该带admin前缀,但AJAX请求的URL是/dataroom/26,正确的URL应该是/admin/dataroom/26。修改JS中的URL:

url: '/admin/dataroom/' + dataroomId,

更稳妥的方式是用Laravel的路由生成函数,在页面里预先输出正确的路由地址:

<input type="hidden" id="dataroomUpdateUrl" value="{{ route('update', ['dataroom' => $dataroom->id]) }}">

然后JS直接读取这个值:

url: $('#dataroomUpdateUrl').val(),

2. 控制器命名空间缺失

如果DataroomController存放在App\Http\Controllers\Admin目录下,路由定义需要补充命名空间:

Route::put('dataroom/{dataroom}', ['as' => 'update', 'uses' => 'Admin\DataroomController@update']);

或者在路由组里统一设置命名空间:

Route::prefix('admin')->namespace('Admin')->group(function() {
    Route::put('dataroom/{dataroom}', ['as' => 'update', 'uses' => 'DataroomController@update']);
});

3. 确认dataroomId的有效性

在AJAX请求前打印dataroomId的值,确保它是真实存在的有效ID:

console.log('dataroomId:', dataroomId);

如果值为空或无效,请求URL会变成/dataroom/,直接导致404。

4. 检查路由文件位置

确保这条PUT路由定义在routes/web.php中,而非api.php。api.php里的路由默认带/api前缀且无CSRF保护,而你的业务逻辑属于后台管理,应该放在web.php里。

5. 排除模型全局作用域影响(可能性低)

虽然你在控制器里用withoutGlobalScope(ActiveScope::class)查询数据,但即便ID为26的数据被作用域过滤,控制器会返回302重定向而非404,所以这不是当前问题的原因。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:25:29