Запрос Laravel5.8 jQuery post с указанием маршрута получения

#jquery #ajax #laravel #laravel-5.8

#jquery #ajax #laravel #laravel-5.8

Вопрос:

В html есть кнопка, поэтому, когда вы нажимаете на нее, она переходит к .post запросу jQuery, который отправляется контроллеру, который должен обработать запрос, а затем возвращает success json обратно, но я получаю сообщение об ошибке (обратите внимание, что ошибка связана с console.log (данные)):

jquery.min.js: 2 СООБЩЕНИЯ 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 но у меня есть csrfToken в запросе jQuery ajax, поэтому я не понимаю, почему в нем говорится, что это не запрос post, а запрос get?

Контроллер

  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>
  

Комментарии:

1. Добавьте DD или Echo перед $commentId = Input::get(‘commentId’);