Laravel ajax post 方法给出 MethodNotAllowedHttpException

Posted

技术标签:

【中文标题】Laravel ajax post 方法给出 MethodNotAllowedHttpException【英文标题】:Laravel ajax post method gives MethodNotAllowedHttpException 【发布时间】:2019-05-07 19:23:24 【问题描述】:

我正在尝试向控制器函数发出 ajax POST 请求,但我不断收到此错误。我按照我在网上找到的建议添加了$.ajaxSetupX-CSRF-TOKEN,但仍然没有运气。

“例外”: "Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException"

web.php

Route::get('my-controller/mypostfunction', 'MyController@mypostfunction');

MyController.php

public function mypostfunction()

    return "Hello poster!";

app.js

$( document ).ready(function()

          $.ajaxSetup(
                headers: 
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                
            );

          // This alerts the CSRF token correctly!
          alert( $('meta[name="csrf-token"]').attr('content') );

    $.post( "my-controller/mypostfunction", function( data ) 
      alert( "Data Loaded: " + data );
    );
);

【问题讨论】:

【参考方案1】:

在您的 web.php 文件中设置 get 方法,因此只需将 get 更改为 post 方法类型

Route::post('my-controller/mypostfunction', 'MyController@mypostfunction');

【讨论】:

【参考方案2】:

在您的 web.php 中,将 get 的路由更改为 post,如下所示:

Route::get('my-controller/mypostfunction', 'MyController@mypostfunction');

// into 

Route::post('my-controller/mypostfunction', 'MyController@mypostfunction');

我希望这是解决方案。

【讨论】:

以上是关于Laravel ajax post 方法给出 MethodNotAllowedHttpException的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.1 AJAX - 即使我发送 POST 请求,也不允许返回 405 GET 方法

如何通过 post 方法将数据从 ajax 传递到 laravel 5.2 控制器

Jquery Ajax post方法给出空值

在 laravel 6 中以 post 方法发送表单数据给出错误,因为该路由不支持 POST 方法。支持的方法:GET、HEAD

Vue-Resource 在 Ajax POST 调用中给出 TokenMismatchException

如何在 laravel post 方法中从 ajax 中删除 403 错误