Joa*_*epi 8 php ajax jquery laravel
我正在使用jquery执行ajax请求,我想将一个数据发送到服务器(单击按钮的id),这样我就可以进行正确的查询并返回正确的响应.我的想法是,在单击按钮后,我应该进行ajax调用以请求数据表.我的jquery函数看起来像这样:
$('button').click(function(){
var dep_id = $(this).attr('id');
var table = $('#dataTable').DataTable( {
"processing": true,
"serverSide": true,
"ajax": {
"url" : '{!! route('workerDepData') !!}' ,
"type" : "POST" ,
"data" : { id: dep_id }
},
columns: [
{ data: 'id', name: 'id' },
{ data: 'worker_name' , name:'name' },
{ data: 'role', name: 'role' },
{ data: 'dep_name' , name:'dep_id'} ,
{ data: 'created_at', name: 'created_at' } ,
{
"className": "details",
"orderable": false,
"data": null,
"defaultContent": '<button class="btn btn-success" id="show">Show</button>' }
]
} );
Run Code Online (Sandbox Code Playgroud)
我的路线如下:
Route::post('/dep/fetch/workers' , 'DepsController@fetch_workers')->name('workerDepData');
Run Code Online (Sandbox Code Playgroud)
我在控制器内部的fetch_workers函数有以下代码:
public function fetch_workers()
{
$workers = DB::table('workers')
->where('workers.dep_id' , '=' ,request('id'))
->join('departaments' , 'workers.dep_id' , '=' , 'departaments.id')
->select('workers.id' , 'workers.name as worker_name' , 'workers.role' , 'departaments.name as dep_name' , 'workers.created_at')
->get();
$ajaxResponse = Datatables::of($workers)->make(true);
return $ajaxResponse;
}
Run Code Online (Sandbox Code Playgroud)
单击按钮后,我收到一个错误,当我检查来自服务器的响应时,由于ajax请求,我看到一个json文件有异常
Symfony的\分量\ HttpKernel \异常\ HttpException.
我检查了这种异常,我看到它是由于使用get而不是post的路由.你可以看到我的路线是使用帖子所以我不明白为什么这个例外.
Ana*_*mov 25
正如我在评论中提到的那样.其CSRF令牌问题.
为了解决它
1)您可以排除CSRF的URI
2)您可以将csrf_token()放入您的ajax请求中.
详细解释可以在https://laravel.com/docs/5.5/csrf找到
小智 5
您必须同时以刀片形式和post方法包含CSRF令牌。
var _token = $("input[name='_token']").val();
Run Code Online (Sandbox Code Playgroud)
并与其他数据一起传递
data: { _token:_token , etc:etc },
Run Code Online (Sandbox Code Playgroud)
玩得开心 :)
| 归档时间: |
|
| 查看次数: |
27681 次 |
| 最近记录: |