以下是Blade中的代码。
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
@foreach($Projects as $Project)
<tr>
<td>
@if($Project->ProjectStatusID == \App\Enumeration\Project\ProjectStatus::Open)
<a pid="{!! $Project->ProjectID !!}" class="Shutmedown" >Cancel</a>
@endif
</td>
</tr>
@endforeach
JQuery的
$('.Shutmedown').click(function() {
$.ajax({
url: "/CancelProject",
type: "POST",
data: {"ProjectID" : $(this).attr('pid')},
async: true,
contentType: "application/json; charset=utf-8",
success: function () {
location.reload();
},
error: function () {
alert('hi');
}
});
});
JQuery Ajax给出了错误:
无法加载资源:服务器响应状态为500 (内部服务器错误)
在检查有关请求的更多详细信息时:我收到了以下错误详情。
VerifyCsrfToken.php第53行中的TokenMismatchException:
我错过了什么吗?
答案 0 :(得分:0)
从Laravel文档开始,必须使用标头将令牌注入到ajax请求的后端。因此他们建议将令牌放在元字段中,例如
<meta name="csrf-token" content="{{ csrf_token() }}">
这样做:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content')
}
});
通过标题将令牌发送到后端。
我希望它有所帮助。
因此,在您的情况下,在ajax请求中传递保存令牌的输入值。