Laravel使用jQuery Ajax发POST请求删图片出现405方法不支持错误如何解决
问题排查及修复方案
1. 修复JS URL拼接语法错误
JS中字符串拼接需使用+运算符,你代码中误用了PHP的.运算符,导致请求路径非法,无法匹配定义的POST路由,是触发405错误的核心原因。
修复后的AJAX URL配置:
url: '/deals/delete-image/' + image_id,
2. 补充CSRF令牌校验
Laravel默认要求所有POST请求携带CSRF令牌,否则会抛出权限错误。首先在HTML的<head>标签中加入令牌meta标记:
<meta name="csrf-token" content="{{ csrf_token() }}">
然后在AJAX请求配置中增加请求头:
$.ajax({ type: "POST", url: '/deals/delete-image/' + image_id, headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, dataType: 'JSON', success: function(data) { console.log("inside success fuction", data); let html = "<div id='success-message'>The image id is "+data+"</div>"; $('.success-message').replaceWith(html); } });
3. 修复路由与控制器方法名不匹配问题
你路由中绑定的方法名为deleteImages,但实际控制器中定义的方法名为deleteDealImages,二者不一致会导致请求无法找到对应处理逻辑,修改路由配置即可:
Route::post('deals/delete-image/{image_id}','MainController@deleteDealImages');
4. 额外优化&校验
- 将删除按钮的
type="submit"改为type="button",避免意外触发表单提交 - 若修改路由后仍报错,执行以下命令清理路由缓存:
php artisan route:clear - 执行
php artisan route:list查看已注册路由列表,确认deals/delete-image/{image_id}的请求方法为POST、绑定的控制器方法正确。
内容的提问来源于stack exchange,提问作者Ebenezer Anand Arapally
相关产品推荐
相关产品推荐

