簡體   English   中英

laravel獲取ajax中輸入類型文本的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM