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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:48:02