我无法将变量从Datatables ajax请求传递给控制器
我试图将DataTableJavaScript请求中的一个变量传递给Laravel中的控制器。 我用参数数据传递它:{}的ajax Datatable,但是当我试图在我的控制器'getUsers'中获取请求时,请求为null为什么?我怎样才能解决这个问题?我试图在同一个表中分离用户表查询和垃圾表查询 这里我的ajax请求包含变量'd.trashed'true或false我无法将变量从Datatables ajax请求传递给控制器,ajax,laravel,controller,request,Ajax,Laravel,Controller,Request,我试图将DataTableJavaScript请求中的一个变量传递给Laravel中的控制器。 我用参数数据传递它:{}的ajax Datatable,但是当我试图在我的控制器'getUsers'中获取请求时,请求为null为什么?我怎样才能解决这个问题?我试图在同一个表中分离用户表查询和垃圾表查询 这里我的ajax请求包含变量'd.trashed'true或false var dataTable = $('#users-table').DataTable({ processin
var dataTable = $('#users-table').DataTable({
processing: true,
serverSide: true,
//deferRender: true,
ajax: {
url: config.routes.userUrl,
data: function (d) {
d.src_name = $('input[name=src_name]').val();
d.src_role = $('select[name=src_role]').val();
d.date_from = $('input[name=date_from]').val();
d.date_to = $('input[name=date_to]').val();
d.trashed = trashControl;
}
},
columns: [
{data: 'check', name: 'check', orderable: false, class: 'select-checkbox', targets: 0, 'checkboxes': {
'selectRow': true
}},
{data: 'user_thumb', name: 'user_thumb', orderable: false, searchable: false},
{data: 'name', name: 'name', class: 'user_name'},
{data: 'email', name: 'email', class: 'user_email'},
{data: 'role', name: 'role'},
{data: 'created_at', name: 'created_at'},
{data: 'updated_at', name: 'updated_at'},
{data: 'action', name: 'action', orderable: false, searchable: false}
],
order: [[ 5, "desc" ]]
});
这里是我试图获取$req->垃圾变量时的控制器。在浏览器的控制台请求中,请求变量存在并具有其值:
public function getUsers(Request $req){
if($req->trashed == false){
$users = User::select(['id', 'user_thumb', 'name', 'email', 'role', 'created_at', 'updated_at']);
}else{
$users = User::select(['id', 'user_thumb', 'name', 'email', 'role', 'created_at', 'updated_at'])->onlyTrashed();
}
return DataTables::of($users)
->filter(function ($query) use ($req) {
if ($req->has('src_name')) {
$regex = $req->get('src_name');
$query->where('name', 'like', '%'.$regex.'%');
}
if ($req->has('src_role')) {
$regex = $req->get('src_role');
$query->where('role', 'like', '%'.$regex.'%');
}
if($req->get('date_from') != '' && $req->get('date_to') == ''){
$regex = $req->get('date_from');
$query->whereDate('created_at', '=', $regex);
}
if($req->get('date_from') != '' && $req->get('date_to') != ''){
$from = $req->get('date_from');
$to = $req->get('date_to');
$query->whereBetween('created_at', [$from, $to])->get();
}
}, true)
->addColumn('check', function () {
return '';
})
->addColumn('user_thumb', function ($user) {
$guid = $user->user_thumb ? asset($user->user_thumb) : asset($user->placeholder);
return '<img src="'.$guid.'" width="50" class="rounded-circle">';
})
->addColumn('action', function ($user) use ($req) {
$buttons = ($req->trashed == false) ? $this->getActionButtons($user) : $this->getActionTrashedButtons($user);
return $buttons;
})
->editColumn('created_at', function($user){
return $user->created_at ? $user->created_at->format('d M Y') : '';
})
->editColumn('updated_at', function($user){
return $user->updated_at ? $user->updated_at->format('d M Y') : '';
})
->setRowClass(function () {
return 'row-data';
})
->rawColumns(['user_thumb', 'action'])
->make(true);
}
非常感谢ajax调用中的数据属性必须向控制器发送一个对象,尝试发送如下内容:数据:{d.src_name:$'input[name=src_name]'。val,somethingelse:$'sometinput.val},这必须向控制器发送值。@itepifanio感谢您的帮助,但我解决了这个问题。在我的控制器中,我将字符串与布尔值匹配。我把这个->假改成了->假,现在它可以工作了。