500 Внутренняя ошибка - ошибка TokenMismatchException - PullRequest
0 голосов
/ 25 июня 2018

Кажется, у меня проблемы с TokenMismatchException на моей кнопке Javascript, которая одобряет комментарий.Я скопировал код из аналогичной системы кнопок и изменил его в соответствии с требованиями этой системы.Я повторно использую переменную Session: Token, не уверен, что в этом проблема?

Error: TokenMismatchException in verifycsrftoken.php line 68

Вот мой код, любые идеи о том, почему я получаю ошибку несоответствия?

HTML:

@if(Auth::user())
       @if($approval)
         <a class="approval approved " data-id="{{$comments->id}}"><i class="fa fa-thumbs-up"></i></a>
        @else
        <a class="approval not-approved " data-id="{{$comments->id}}"><i class="fa fa-thumbs-up"></i></a>
        @endif

        @else
        <a class="not-approved" href="{{route('login')}}"><i class="fa fa-thumbs-up"></i></a>
        @endif

Javascript:

        var token = '{{ Session::token() }}';
        var urlApproval = '{{ route('approvals') }}';
        $('.approval').on('click', function(event){
            event.preventDefault();
            var buttonToChange = $(this);
            var $this = $(this);

            $.ajax({
                        method: 'POST',
                        url: urlApproval,
                        data: { comment_id: $(event.target).data("id")}, _token: token })

                    .done(function() {
                        if(buttonToChange.hasClass('approved')) {
                            buttonToChange.addClass('not-approved');
                            buttonToChange.removeClass('approved');
                        }else {
                            buttonToChange.addClass('approved');
                            buttonToChange.removeClass('not-approved');
                        }
                    });
        });

1 Ответ

0 голосов
/ 26 июня 2018

При использовании ajax в laravel и при использовании метода POST вам всегда нужно предоставить токен csrf, поэтому вам нужно сделать следующее:

В вашем HTML:

<meta name="csrf-token" content="{{ csrf_token() }}">

Перед вызовом Ajax:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...