我正在尝试获取输入类型文本的值,以将其用于Laravel控制器查询中的where子句。
这是ajax代码的一部分:
$(function() {
$('#data-table').DataTable({
"processing": true,
"serverSide": true,
"ajax":{
"url": "{{ route('item_data_table') }}",
"dataType": "json",
"type": "POST",
"data":{ _token: "{{ csrf_token() }}"}
},
...
...
...
});
});
至于我的审判,我尝试改变:
"data":{ _token: "{{ csrf_token() }}"}
成:
"data":{value: $("input[name=categoryname]").val()}
然后在我的控制器中,我有这部分查询代码,试试这样:
public function dataTable(Request $request)
{
$columns = [
1 => 'id',
2 => 'item_name',
3 => 'item_category_name',
4 => 'item_detail_category_name',
];
$categoryname = Input::get('value');
$totalData = MItem::count();
$totalFiltered = $totalData;
$limit = request()->length;
$start = request()->start;
$order = $columns[request()->order[0]['column']];
$dir = request()->order[0]['dir'];
$items = MItem::select('m_item.id',
'm_item.item_name',
'm_item_category.item_category_name',
'm_item_detail_category.item_detail_category_name'
)
->join('m_item_category', 'm_item.item_category_id', 'm_item_category.id')
->join('m_item_detail_category', 'm_item.item_category_detail_id', 'm_item_detail_category.id');
if($categoryname) {
$items->where('m_item_category.item_category_name', 'like', '%'.$userID.'%');
}
$items->offset($start)
->limit($limit)
->orderBy($order, $dir)
->get();
$data = [];
...
...
...
}
我使用$cateogryname
作为我的where子句,但无法成功完成。
如何完成代码?
答案 0 :(得分:3)
您无需手动传递令牌。只需set up it once并将其用于所有Ajax调用:
<meta name="csrf-token" content="{{ csrf_token() }}">
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
这也允许你不要将PHP与JS混合。
答案 1 :(得分:2)
尝试传递这样的数据
data: function (d) {
d.name = $('input[name=name]').val();
d.email = $('input[name=email]').val();
}
你可以在这里找到例子
https://datatables.yajrabox.com/collection/custom-filter
答案 2 :(得分:0)
感谢您给我提供想法的人,不知怎的,我这样做了,并让我的搜索功能正常工作:
用于ajax代码:
"ajax":{
"url": "{{ route('item_data_table') }}",
"dataType": "json",
"type": "POST",
"data":{
_token: "{{ csrf_token() }}",
'item_detail_category_name': $('#item_detail_category_name').val(),
'item_category_name': $('#item_category_name').val(),
}
}
并且对于控制器条件,
$limit = request()->length;
$start = request()->start;
$order = $columns[request()->order[0]['column']];
$dir = request()->order[0]['dir'];
$items = MItem::select('m_item.id',
'm_item.item_name',
'm_item_category.item_category_name',
'm_item_detail_category.item_detail_category_name'
)
->join('m_item_category', 'm_item.item_category_id', 'm_item_category.id')
->join('m_item_detail_category', 'm_item.item_category_detail_id', 'm_item_detail_category.id');
if(request()->item_category_name) {
$items->where('m_item_category.item_category_name', 'like', '%'.request()->item_category_name.'%');
}
if(request()->item_detail_category_name) {
$items->where('m_item_detail_category.item_detail_category_name', 'like', '%'.request()->item_detail_category_name.'%');
}
$totalData = $items->get()->count();
$totalFiltered = $totalData;
$data = [];
$items->offset($start)->limit($limit)->orderBy($order, $dir);
$items = $items->get();