Laravel同URL绑定GET/POST方法 表单提交触发GET而非POST问题求助
可行解决方案
- 移除
@method('PATCH')伪方法声明
Laravel的@method指令用于RESTful方法欺骗,你添加了该声明后,Laravel会将请求识别为PATCH类型,如果你需要原生POST请求,直接删除这一行即可。如果你需要保留PATCH逻辑,只需将对应路由修改为Route::patch()或者Route::match(['post', 'patch']),Laravel方法欺骗底层本身还是走POST协议提交,不会触发GET请求。 - 补全缺失的HTML闭合标签
你贴出的代码缺失</button>和</form>闭合标签,标签不完整会导致浏览器解析表单结构异常,误将表单参数拼接在URL后以GET方式提交,补全所有闭合标签即可。 - 排查表单嵌套问题
如果当前form嵌套在另一个method为GET的form标签内部,浏览器会忽略内层form的配置,默认走外层form的GET方法提交,移除嵌套结构,保证每个表单独立即可。 - 检查路由定义
确认document.update路由确实支持POST方法,若你使用Route::any()注册同一路径,会优先匹配浏览器默认的GET请求,建议改为Route::match(['get', 'post'])显式指定允许的请求方法。 - 排查前端JS拦截逻辑
检查页面是否有绑定在.form-action表单或.btn-submit按钮上的JS事件,是否有逻辑阻止了原生表单提交,手动拼接参数走GET跳转(比如调用window.location.href跳转、在submit事件中发送GET请求),调整对应JS逻辑即可。
内容的提问来源于stack exchange,提问作者roche
相关产品推荐
相关产品推荐

