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

Laravel 8发送jQuery ajax PATCH请求提示路由不支持GET方法

问题原因
  • URL重定向导致方法变更:这是这类问题最常见的诱因。Laravel内置的重定向规则会自动将末尾带斜杠的URL 301重定向到不带斜杠的地址,重定向过程中所有非GET请求都会自动转为GET方法,就会触发GET方法不支持的报错。你可以先检查Network面板中实际发出的请求地址,是否和路由定义的格式完全一致,有没有多/少斜杠的情况。
  • 路由参数缺失:你定义的路由需要{ID}参数,如果Blade模板中的$ID变量为空,生成的URL会缺少最后一段参数,无法匹配到对应的PATCH路由,可能会匹配到其他同前缀的GET路由,触发报错。
  • JS元素获取错误:你给select元素设置的id是elementID,但JS代码中全部用getElementById('prist_popust')获取元素,如果页面没有id为prist_popust的元素,会导致update_url取值异常,请求到错误的地址。
  • 权限校验重定向:你调用的auth_check()函数如果内部有重定向逻辑(比如未登录跳转登录页),重定向后请求方法也会转为GET。
解决方案
  • 先修复JS的元素选择错误:要么将select的id属性改为prist_popust,要么将JS中所有getElementById('prist_popust')的参数改为elementID,保证能正确读取到data-update-url的取值。
  • 确认路由生成的URL参数正常:打开浏览器开发者工具的Network面板,检查实际发出的请求URL是否正确填充了{ID}参数,末尾有没有多余的斜杠,和路由定义的格式保持完全一致。
  • 调整AJAX请求配置:你已经在请求参数中携带了_method: "PATCH"做 Laravel 方法伪造,可以直接将AJAX的type参数改为POST,避免部分服务器、代理不支持PATCH原生方法的问题。
  • 清理路由缓存:如果项目开启了路由缓存,运行php artisan route:clear清理缓存,保证最新的路由定义生效。
  • 如果确实存在URL末尾斜杠问题,也可以直接调整路由定义,在末尾加上斜杠和生成的URL保持匹配,避免触发重定向。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 01:45:03