我的Javascript按钮上的TokenMismatchException似乎有问题,它正在批准一个评论。我从一个类似的按钮系统复制代码,并修改它以符合这个系统的要求。我正在重用会话:令牌变量,不确定这是否是问题所在?
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>
@endifJavascript:
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');
}
});
});发布于 2018-06-25 21:12:40
当在laravel中使用ajax和POST方法时,您总是需要提供csrf令牌,所以您需要做的是:
在HTML中:
<meta name="csrf-token" content="{{ csrf_token() }}">在调用Ajax之前:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});https://stackoverflow.com/questions/51029500
复制相似问题