删除yajra laravel数据表中的用户

时间:2016-05-09 12:45:05

标签: laravel datatable

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({

它给出了“未定义”

它不适合我..请帮助..

2 个答案:

答案 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解释了如何执行此操作。