我尝试使用简单的ajax代码更新记录,例如:
$('[id^="change_user_status_account-"]').click(function () {
var id = $(this).attr('id').split('-');
$.ajax({
type: "POST",
url: "{{ URL::route('changeUserStatusAccount') }}",
data: {user_id: id[1]},
success: function (data) {
if (data == 1) {
$("#change_user_status_account-1").text('Enable Account');
} else {
$("#change_user_status_account-1").text('Disable Account');
}
}
});
return false;
});
此ajax中的 var id
为2
且没有问题
但我收到错误:
Whoops, looks like something went wrong.
1/1 TokenMismatchException in VerifyCsrfToken.php line 53:
Firebug错误:
"NetworkError: 500 Internal Server Error - http://localhost/epay-pro/public/changeUserStatusAccount"
我的路线:
Route::post('/changeUserStatusAccount', array(
'as' => 'changeUserStatusAccount', function () {
$info = \App\User::find(Request::input('user_id'));
$status = $info->status == 1 ? 0 : 1;
$info->status = $status;
$info->save();
return $status;
}
));
我的Html:
<span id="change_user_status_account-{{$contents->id}}">
答案 0 :(得分:1)
默认情况下,Laravel已为POST
,PUT
或DELETE
请求启用了CSRF保护。
因此,您应该将X-CSRF-TOKEN
标头传递给ajax请求。
要exclude a URI from the CSRF protection,您应该将其添加到$except
中间件的VerifyCsrfToken
属性中。
答案 1 :(得分:0)
改变:
data: {user_id: id[1]},
到
data: {user_id: id[1], _token:{{ csrf_token() }}},
或在表单中添加<input type="hidden" name="_token" value="{{ csrf_token() }}">
。