Laravel5.8 jQuery发布请求说它是一个获取路线

时间:2019-03-14 11:52:18

标签: jquery ajax laravel laravel-5.8

在html中有一个按钮,因此当您单击它时,它会向.post jQuery请求发送至必须处理该请求,然后返回成功json的控制器,但我收到一个错误(请注意错误是console.log(data)):

  

jquery.min.js:2 POST http://127.0.0.1:8000/comment/like 500(内部服务器错误)

在控制台中

。当我进一步查看时,Laravel应用程序返回此 错误:

  

此路由不支持GET方法。支持的方法:POST,PUT,DELETE。

带有以下json响应文本:

  #json: null
  #convertedFiles: null
  #userResolver: Closure($guard = null) {#197 …6}
  #routeResolver: null
  +attributes: ParameterBag {#45}
  +request: ParameterBag {#51}
  +query: ParameterBag {#51}
  +server: ServerBag {#47}
  +files: FileBag {#48}
  +cookies: ParameterBag {#46}
  +headers: HeaderBag {#49}
  #content: null
  #languages: null
  #charsets: null
  #encodings: null
  #acceptableContentTypes: array:6 [▶]
  #pathInfo: "/comment/like"
  #requestUri: "/comment/like"
  #baseUrl: ""
  #basePath: null
  #method: "GET"
  #format: null
  #session: null
  #locale: null
  #defaultLocale: "en"
  -isHostValid: true
  -isForwardedValid: true
  basePath: ""
  format: "html"

所以我知道它必须是POST路由,但是web.php控制器中的路由是

Route::post('/comment/like','LikeController@likeIt')->name('likeIt');

当我对500服务器错误进行一些研究时,在需要添加csrfToken的地方得到了大多数答案,但是在jQuery ajax请求中有csrfToken,所以我不明白为什么会这样说不是发帖请求而是获取请求?

控制器

 public function likeIt()
 {
    $commentId = Input::get('commentId');
    $comment = Comment::find($commentId);

    $comment->likeIt();

    return response()->json(['status' => 'succes']);
 }

html

 <button class="btn btn-sm" id="{{$comment->id}}" onclick="likeIt('{{$comment->id}}', this)"><i class="material-icons">done</i></button>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>

function likeIt(commentId, elem) {
        const csrfToken='{{csrf_token()}}';
        $.post('{{route('likeIt')}}', {commentId: 
commentId,_token:csrfToken}, function (data) {
            console.log(data);
        });
    }

</script>

0 个答案:

没有答案