通过edittable提交时,VerifyCsrfToken.php中的TokenMismatchException

时间:2017-02-04 08:17:25

标签: php jquery laravel datatables

我使用了edittable jquery插件:

<td>Name</td><td class="name" data-pk="<?php echo auth()->user()->id;?>" data-url="{{url('/edit/name')}}">{{auth()->user()->name}}</td>

$('.name').editable();

此路线:Route::post('/edit/name', 'EditController@name');

控制器:

 public function name(Request $request)
    {
        $update=User::find()->where(['id'=>$request->pk])->first();
        $update->name=$request->value;
        $update->update();
    }

但是我得到了TokenMismatchException错误:如何在使用jquery x-editable插件时传递令牌?

2 个答案:

答案 0 :(得分:2)

在laravel中,对于post请求,您还必须传递csrf标记值。它是laravel提供的安全机制。要删除此错误,请尝试以下操作:

<input type="hidden" name="_token" value="{{ csrf_token() }}">

将此隐藏字段放在您的表单标记中,其值也会在提交表单时发布。

Reference

对于ajax:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

答案 1 :(得分:0)

尝试在表单html代码中添加以下行

<input type="hidden" name="_token" value="{{ csrf_token() }}">

我希望它有效。