Ajax调用与Laravel 5返回错误500(内部服务器错误),甚至当CSRF令牌传递
问题描述:
标题说的这一切。Ajax调用与Laravel 5返回错误500(内部服务器错误),甚至当CSRF令牌传递
.blade.php文件:
@foreach($posts as $post)
<article class="post" data-postid=" {{ $post->id }} ">
<p>{{ $post->body }}</p>
<div class="info">
Posted by {{$post->user->first_name}} on {{ $post->created_at }}
</div>
<div class="interaction">
<a href="#" class="like">Like</a> |
<a href="#" class="like">Dislike</a>
@if(Auth::user() == $post->user)
|
<a href="#" class="edit">Edit</a> |
<a href="{{ route('post.delete', ['post_id' => $post->id]) }}">Delete</a>
@endif
</div>
</article>
@endforeach
.blade.php文件中的JS:
<script>
var token = '{{ csrf_token() }}';
var urlEdit = '{{ route('edit') }}';
var urlLike = '{{ route('like') }}';
</script>
.js文件:
$('.like').on('click', function(event){
event.preventDefault();
postId = event.target.parentNode.parentNode.dataset['postid'];
var isLike = event.target.previousElementSibling == null; //Checks if it's a like or dislike.
$.ajax({
method: 'POST',
url: urlLike,
data: {isLike: isLike, postId: postId, _token: token}
})
.done(function(){
});
});
- 我试着检查一下,如果我在路由上做错了什么。
- 我试图传送令牌的元标签中,而不是将其定义为一个javascript变量
- 的我尝试使用双手镯“,而不是单个的人”。
似乎没有任何工作,这是怎么回事这里?
答
首先,你必须像这样CSRF加元。
<head>
<meta name="csrf-token" content="{{ csrf_token() }}">
</head>
<script>
$('.like').bind('click', function(event) {
event.preventDefault();
postId = event.target.parentNode.parentNode.dataset['postid'];
var isLike = event.target.previousElementSibling == null;
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: url,
type: "POST",
data: {isLike: isLike, postId: postId, _token: token},
dataType: "json",
beforeSend: function(){
$('#loading').show();
},
success: function(resp) {
console.log(resp);
}
});
});
</script>
+0
请检查这一点,让我知道 –
你有PHP错误报告吗?如果没有,添加它,看看错误返回,ITLL告诉你很多超过我们所能猜到的。让我们知道这是什么说的,我们可以帮助更多 – DelightedD0D
嗯,我从我所知道的错误报告,所以它不应该与PHP的任何东西。 无论如何,我通过排除在“应用\ HTTP \中间件\ VerifyCsrfToken” CSRF验证“解决”它简单地通过增加内 路径'保护$除了= [ “/路径” ];' –
*错误500(内部服务器错误)*非常特别意味着服务器出现错误,并且该错误几乎肯定会在PHP中引发。无论如何,快乐你得到了它:) – DelightedD0D