Laravel登录请求返回POST 405 (Method Not Allowed)无错误提示如何解决
问题排查与解决步骤
核心错误原因
405 Method Not Allowed 错误本质是请求方法与路由定义的接收方法不匹配,你当前发送的是POST请求到/home路径,但路由配置里没有定义接收POST请求的/home路由。
具体问题梳理
- AJAX代码配置了请求类型为
POST,目标地址为url:"home" - 现有路由配置仅定义了2条GET路由,没有对应
POST /home的路由规则 - AJAX错误回调存在语法错误:
$.each循环内直接使用了未定义的data变量,会导致错误触发时无法正常弹出提示 - 表单本身配置的
action为{{ route('login') }},和AJAX请求的home路径不一致,存在逻辑冲突风险
分步解决方法
修正路由配置
新增POST类型的对应路由,绑定登录逻辑的处理方法,示例如下:
Route::view('/','welcome'); Route::get('welcome', 'HomeController@loginUser'); // 新增POST路由接收AJAX登录请求 Route::post('home', 'HomeController@loginUser')->name('home');
如果你的登录逻辑写在其他控制器方法中,请替换为实际的控制器和方法名。
修正AJAX错误回调语法问题
替换错误回调中未定义的data变量,改为从请求返回对象xhr读取状态:
error: function (xhr, status, error) { if(xhr.responseJSON && xhr.responseJSON.errors){ $.each(xhr.responseJSON.errors,function(key,item) { if(xhr.status == 400) { $('#form_submit_error').modal('show'); setTimeout(function() {$('#form_submit_error').modal('hide');}, 2000); } }) } }
路径一致性优化
建议AJAX的请求地址直接使用Laravel路由生成函数,避免手动写路径出错:
// 与路由别名对应,路径自动生成 url: "{{ route('home') }}",
如果表单本身要提交到登录接口,也可以直接和表单的action保持一致:
url: "{{ route('login') }}",
同时记得在路由配置中给对应的POST登录路由加上name('login')别名。
内容的提问来源于stack exchange,提问作者Irtaza Ali
相关产品推荐
相关产品推荐

