[英]laravel Get Value of input type text in ajax
我正在嘗試獲取輸入類型文本的值,以將其用於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 = [];
...
...
...
}
我在where子句中使用了$cateogryname
,但無法成功執行。
代碼如何完成?
您無需手動傳遞令牌。 只需設置一次並將其用於所有Ajax調用:
<meta name="csrf-token" content="{{ csrf_token() }}">
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
這也將使您不將PHP與JS混合使用。
嘗試像這樣傳遞數據
data: function (d) {
d.name = $('input[name=name]').val();
d.email = $('input[name=email]').val();
}
您可以在這里找到示例https://datatables.yajrabox.com/collection/custom-filter
感謝您給我一些想法,以某種方式我做到了這一點,並使搜索功能正常工作:
對於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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.