hy,我是laravel的新手,现在使用L5和yajra / datatables插件。当我点击删除按钮时,它会在VerifyCsrfToken.php第53行中出现错误“tokenMismatchException:” 我的代码是
Controller.php这样
return Datatables::of($users)
->addColumn('action', function ($id) {
return '<button class="btn-delete" data-remote="localhost/blog/public/delete/' . $id->id . '">Delete</button>'; })
->make(true);
在视图中
<script>
$(function(){
$('#users-table').DataTable({
processing: true,
serverSide: true,
ajax: '{!! route("data") !!}',
columns: [
{data: 'id', name: 'id'},
{data: 'name', name: 'name'},
{data: 'email', name: 'email'},
{data: 'created_at', name: 'created_at'},
{data: 'updated_at', name: 'updated_at'},
{data: 'action', name: 'action', orderable: false, searchable: false}
]
});
$('#users-table').on('click', '.btn-delete[data-remote]', function (e) {
e.preventDefault();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
var url = $(this).data('remote');
// confirm then
$.ajax({
url:'delete/{id}' ,
type: 'DELETE',
dataType: 'json',
data: {method: '_DELETE', submit: true}
}).always(function (data) {
$('#users-table').DataTable().draw(false);
});
});
});
</script>
在route.php中
Route::get('delete/{id}',array('as'=>'delete', 'uses'=>'EditController@delete'));
我参考Laravel yajra/Datatables action delete is not working
我试过这个
$('#users-table').on('click', '.btn-delete[data-remote]', function (e) {
e.preventDefault();
var id = $(this).attr('id');
alert(id);
$.ajaxSetup({
它给出了“未定义”
它不适合我..请帮助..
答案 0 :(得分:0)
您需要在html中添加以下内容:
<meta name="csrf-token" content="{{ csrf_token() }}">
您一定要查看此页面以了解其工作原理:https://laravel.com/docs/5.2/routing#csrf-protection
答案 1 :(得分:0)
tokenMismatchException in VerifyCsrfToken.php line 53:
错误表示您的csrf令牌已过期,或者您在执行发布请求时未将此信息发送到服务器。我猜第二个。
在对服务器执行ajax post请求时,您需要在数据中包含参数_token
。您可以使用csrf_token()
获取此用户的当前csrf令牌。
另一种选择是在您的ajax设置中添加X-CSRF-TOKEN标头。 The Laravel documentation解释了如何执行此操作。