Laravel5.8 jQuery пост запрос о том, чтобы получить маршрут - PullRequest
1 голос
/ 14 марта 2019

В 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, но у меня есть csrfToken в запросе jQuery ajax, поэтому я не понимаю, почему он говорит, что это не так почтовый запрос, но вместо этого запрос на получение?

Контроллер

 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...