MethodNotAllowedHttpException 错误 Laravel

Posted

技术标签:

【中文标题】MethodNotAllowedHttpException 错误 Laravel【英文标题】:MethodNotAllowedHttpException Error Laravel 【发布时间】:2018-08-07 12:32:06 【问题描述】:

当我使用ajax 提交表单数据时出现错误MethodNotAllowedHttpException

HTML

<form class="form-signin" id="loginForm" role="form" method="POST">
    // Form
</form>
<script>
        $('#loginForm').submit(function () 
            initLogin($('#email').val(),$('#password').val());
        );
</script>

JavaScript

function initLogin(email, password) 

    $.ajax( 
        headers: 
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        ,  
        url:'loginModal',
        method:'POST',
        data: 
            strEmail: email,
            strPassword: password
        ,  
        success: function( bolUpdated )  
            alert('yes');
        ,  
        fail: function() 
             alert('no');
           
    ); 


路线

Route::post( 'loginModal', 'Auth\LoginController@loginModal' );

控制器

public function loginModal( Request $request )  
    Log::info('test');
   

我尝试更改表单的类型,但没有成功。知道可能是什么问题吗?

【问题讨论】:

我会尝试使用 postman 或 cURL 来查看是否有任何机会没有访问您期望的 URL。在你的 ajax 调用中尝试一个完整的 url 路径可能会更明确。 还可以尝试在您的开发者控制台中查看您的网络选项卡,看看它发出了什么请求。 同意@AlexHarris 尝试使用 php cURL 来检查 URL。 【参考方案1】:

如果你不使用 ajax,你必须阻止表单提交

    $('#loginForm').submit(function (e) 
        e.preventDefault(); //<-- here 
        initLogin($('#email').val(),$('#password').val());
        return false; //<---- or here
    );

否则表单将向当前页面(因为操作不存在)发出发布请求,该页面没有发布请求的路由。

【讨论】:

【参考方案2】:

防止表单的默认事件,因为您还没有为表单定义任何操作,并且它的请求正在发送到当前页面

 $('#loginForm').submit(function (event) 
        event.preventDefault();
        initLogin($('#email').val(),$('#password').val());
    );

【讨论】:

以上是关于MethodNotAllowedHttpException 错误 Laravel的主要内容,如果未能解决你的问题,请参考以下文章