Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 我需要数据,根据我发送的类型_Ajax_Datatable_Laravel 5.8 - Fatal编程技术网

Ajax 我需要数据,根据我发送的类型

Ajax 我需要数据,根据我发送的类型,ajax,datatable,laravel-5.8,Ajax,Datatable,Laravel 5.8,我的视图刀片,显示所有类型的数据,但我只需要特定类型,通过ajax发送:{{route'taxonomies.json',type}。如何从给定类型发送我想要的类型 <div class="table"> <table id="taxonomyTable"> <thead> <tr> <th>SN</th> <

我的视图刀片,显示所有类型的数据,但我只需要特定类型,通过ajax发送:{{route'taxonomies.json',type}。如何从给定类型发送我想要的类型

<div class="table">
    <table id="taxonomyTable">
        <thead>
            <tr>
                <th>SN</th>
                <th>Title</th>
                <th>Parent</th>
                <th>Status</th>
                <th>Action</th>
            </tr>
        </thead>
    </table>
</div>
<div class="modal fade" id="quickModal" tabindex="-1" role="dialog" aria-labelledby="quickModal" aria-hidden="true">
</div> 
<input type="hidden" id="type" value="{{ $type }}" />
我的分类控制器有:

    public function taxonomyJson()
{
 $taxonomy = Taxonomy::with('parent')->toJson();
    return DataTables::of($taxonomy)
        ->addIndexColumn()
        ->addColumn('action', function ($taxonomy) {
            return '<div class="table-actions  float-left">
                <a href="javascript:void(0);" class="btn-edit-taxonomy" data-id="' . $taxonomy->id . '"><i class="ik ik-edit-2 green"></i></a>
                <a href="javascript:void(0);" class="btn-delete-taxonomy" data-id="' . $taxonomy->id . '"><i class="ik ik-trash-2 red"></i></a>
           </div>';
        })->make();
}
上面提到的代码显示数据中的所有类型,但我只需要给定类型的数据。像我的类型是类别、标签、视频、滑块等,我只需要类别类型的数据。
如何获取它?

更改您输入的隐藏标记,该标记包含整个路线及其参数

<input type="hidden" id="type" value="{{ route('taxonomies.json', ['type' => $type]) }}" />
这样,您就不必担心传递动态参数。值从PHP代码转换为JS代码

&在控制器功能中

public function taxonomyJson($type=null)
{
 $taxonomy = Taxonomy::with('parent')
 if ($type) {
    $taxonomy = $taxonomy->where('type', $type);
 }
 $taxonomy = $taxonomy->toJson();
    return DataTables::of($taxonomy)
        ->addIndexColumn()
        ->addColumn('action', function ($taxonomy) {
            return '<div class="table-actions  float-left">
                <a href="javascript:void(0);" class="btn-edit-taxonomy" data-id="' . $taxonomy->id . '"><i class="ik ik-edit-2 green"></i></a>
                <a href="javascript:void(0);" class="btn-delete-taxonomy" data-id="' . $taxonomy->id . '"><i class="ik ik-trash-2 red"></i></a>
           </div>';
        })->make();
}

根据您的问题,据我所知,您需要过滤数据,为了获得过滤数据,您需要传递一个必须用于过滤查询的过滤器类型。这里有一个例子

if ($request->ajax()) {
            $users = User::select(
                'users.id',
                'users.name',
                'users_details.first_name',
                'users_details.last_name',
                'users.email',
                'users.membership_no',
                'users.is_active',
                'users.created_at'
            )
                ->leftJoin('users_details', 'users.id', '=', 'users_details.users_id')
                ->where('user_group', '<>', 'admin')
                ->where(function ($query) use ($request) {
                    $genery = $request->get("genere");
                    $varsitySession = $request->get("varsity_session");
                    $yearOfPassing = $request->get("year_of_passing");
                    $department = $request->get("department");
                    $bloodGroup = $request->get("blood_group");
                    $membership = $request->get("membership");
                    if (isset($genery) && $genery) {
                        $query->where('users_details.genre', $genery);
                    }
                    if (isset($varsitySession) && $varsitySession) {
                        $query->where('users_details.varsity_session', $varsitySession);
                    }
                    if (isset($yearOfPassing) && $yearOfPassing) {
                        $query->where('users_details.year_of_passing', $yearOfPassing);
                    }
                    if (isset($department) && $department) {
                        $query->where('users_details.department', $department);
                    }
                    if (isset($bloodGroup) && $bloodGroup) {
                        $query->where('users_details.blood_group', $bloodGroup);
                    }
                    if (isset($membership) && $membership) {
                        $query->where('users_details.membership', $membership);
                    }
                    if (isset($request->requested) && $request->requested == 0) {
                        $query->where('users.membership_no', $request->requested);
                    }
                })
                ->get();
            return Datatables::of($users)
                ->editColumn('name', function ($users) {
                    return ($users->first_name) ? $users->first_name . ' ' . $users->last_name : $users->name;
                })
                ->editColumn('is_active', function ($users) {
                    return ($users->is_active) ? 'Active' : 'De-active';
                })
                ->editColumn('membership_no', function ($users) {
                    return ($users->membership_no) ? $users->membership_no : 'Not Assigned';
                })
                ->editColumn('created_at', function ($users) {
                    return $users->created_at->toDayDateTimeString();
                })

                ->make(true);
        }
这里的genre、varstity、year、department、blood、membership是我随请求发送的过滤数据

这是我的数据表代码

  $('.dataTable').dataTable({
            destroy: true,
            paging: true,
            searching: true,
            sort: true,
            processing: true,
            serverSide: true,
            "ajax": {
                url: '{{ url('users/datatable')}}',
                type: 'POST',
                headers: {
                    'X-CSRF-TOKEN': '{{ csrf_token() }}'
                },

                'data': function (d) {
                    d.genere = $("#genere").val();
                    d.varsity_session = $("select[name = varsity_session]").val();
                    d.year_of_passing = $("select[name = year_of_passing]").val();
                    d.department = $("select[name = department]").val();
                    d.blood_group = $("input[name = blood_group]").val();
                    d.membership = $("select[name = membership]").val();
                    d.paymentStatus = $("select[name = paymentStatus]").val();
                    d.requested = $("select[name = requested]").val();

                }
            },
            "columns": [
                {data: 'id'},
                {data: 'name'},
                {data: 'email'},
                {data: 'membership_no'},
                {data: 'is_active'},
                {data: 'varsity_session'},
                {data: 'due_amount'},
                {data: 'paid_amount'},
                {data: 'created_at'},
                {data: 'last_transaction_date'},
                {data: 'action'},
            ],
            "columnDefs": [
                {"bSortable": false, "targets": [1, 6]},
                {"searchable": false, "targets": [4, 6]}
            ],

            lengthMenu: [[10, 50, 100, -1], [10, 50, 100, "All"]],
            pageLength: 10,
            "dom": 'Blfrtip',
            buttons: [
                {
                    extend: 'copy',
                    text: 'copy',
                    className: 'btn btn-primary',
                    exportOptions: {
                        columns: 'th:not(:last-child)'
                    }
                },
                {
                    extend: 'csv',
                    text: 'csv',
                    className: 'btn btn-warning',
                    exportOptions: {
                        columns: 'th:not(:last-child)'
                    }
                },
                {
                    extend: 'excel',
                    text: 'excel',
                    className: 'btn btn-danger',
                    exportOptions: {
                        columns: 'th:not(:last-child)'
                    }
                },
                {
                    extend: 'pdf',
                    text: 'pdf',
                    className: 'btn btn-success',
                    exportOptions: {
                        columns: 'th:not(:last-child)'
                    }
                },
                {

                    extend: 'print',
                    text: 'print',
                    className: 'btn btn-btn-info',
                    exportOptions: {
                        columns: 'th:not(:last-child)'
                    }
                }
            ]


        });
    });
还有我的静态Html代码

<div class="row">
    <div class="col-lg-12">
        <div class="table-responsive">
            <table class="display compact dataTable">
                <thead>
                <tr>
                    <th>ID</th>
                    <th>Name</th>
                    <th>Email</th>
                    <th>Membership No</th>
                    <th>Status</th>
                    <th>Versity Session</th>
                    <th>Due Amount</th>
                    <th>Paid Amount</th>
                    <th>Created At</th>
                    <th>Last Transaction</th>
                    <th>Action</th>
                </tr>
                </thead>
                <tbody>


                </tbody>

            </table>
        </div>

    </div>
    <!-- /.col-lg-12 -->

</div>

与其只传递一个类型,不如将整个路由url传递到该类型,这样会更容易。如果您可以共享选择类型值的html代码,我可能可以共享我想到的各种解决方案。SN Title Parent Status操作您可以尝试,这样您就可以为您的ajax创建一个完整的url,而不是获取一个值。明白我的意思了吗?
if ($request->ajax()) {
            $users = User::select(
                'users.id',
                'users.name',
                'users_details.first_name',
                'users_details.last_name',
                'users.email',
                'users.membership_no',
                'users.is_active',
                'users.created_at'
            )
                ->leftJoin('users_details', 'users.id', '=', 'users_details.users_id')
                ->where('user_group', '<>', 'admin')
                ->where(function ($query) use ($request) {
                    $genery = $request->get("genere");
                    $varsitySession = $request->get("varsity_session");
                    $yearOfPassing = $request->get("year_of_passing");
                    $department = $request->get("department");
                    $bloodGroup = $request->get("blood_group");
                    $membership = $request->get("membership");
                    if (isset($genery) && $genery) {
                        $query->where('users_details.genre', $genery);
                    }
                    if (isset($varsitySession) && $varsitySession) {
                        $query->where('users_details.varsity_session', $varsitySession);
                    }
                    if (isset($yearOfPassing) && $yearOfPassing) {
                        $query->where('users_details.year_of_passing', $yearOfPassing);
                    }
                    if (isset($department) && $department) {
                        $query->where('users_details.department', $department);
                    }
                    if (isset($bloodGroup) && $bloodGroup) {
                        $query->where('users_details.blood_group', $bloodGroup);
                    }
                    if (isset($membership) && $membership) {
                        $query->where('users_details.membership', $membership);
                    }
                    if (isset($request->requested) && $request->requested == 0) {
                        $query->where('users.membership_no', $request->requested);
                    }
                })
                ->get();
            return Datatables::of($users)
                ->editColumn('name', function ($users) {
                    return ($users->first_name) ? $users->first_name . ' ' . $users->last_name : $users->name;
                })
                ->editColumn('is_active', function ($users) {
                    return ($users->is_active) ? 'Active' : 'De-active';
                })
                ->editColumn('membership_no', function ($users) {
                    return ($users->membership_no) ? $users->membership_no : 'Not Assigned';
                })
                ->editColumn('created_at', function ($users) {
                    return $users->created_at->toDayDateTimeString();
                })

                ->make(true);
        }
                $genery = $request->get("genere");
                $varsitySession = $request->get("varsity_session");
                $yearOfPassing = $request->get("year_of_passing");
                $department = $request->get("department");
                $bloodGroup = $request->get("blood_group");
                $membership = $request->get("membership");
  $('.dataTable').dataTable({
            destroy: true,
            paging: true,
            searching: true,
            sort: true,
            processing: true,
            serverSide: true,
            "ajax": {
                url: '{{ url('users/datatable')}}',
                type: 'POST',
                headers: {
                    'X-CSRF-TOKEN': '{{ csrf_token() }}'
                },

                'data': function (d) {
                    d.genere = $("#genere").val();
                    d.varsity_session = $("select[name = varsity_session]").val();
                    d.year_of_passing = $("select[name = year_of_passing]").val();
                    d.department = $("select[name = department]").val();
                    d.blood_group = $("input[name = blood_group]").val();
                    d.membership = $("select[name = membership]").val();
                    d.paymentStatus = $("select[name = paymentStatus]").val();
                    d.requested = $("select[name = requested]").val();

                }
            },
            "columns": [
                {data: 'id'},
                {data: 'name'},
                {data: 'email'},
                {data: 'membership_no'},
                {data: 'is_active'},
                {data: 'varsity_session'},
                {data: 'due_amount'},
                {data: 'paid_amount'},
                {data: 'created_at'},
                {data: 'last_transaction_date'},
                {data: 'action'},
            ],
            "columnDefs": [
                {"bSortable": false, "targets": [1, 6]},
                {"searchable": false, "targets": [4, 6]}
            ],

            lengthMenu: [[10, 50, 100, -1], [10, 50, 100, "All"]],
            pageLength: 10,
            "dom": 'Blfrtip',
            buttons: [
                {
                    extend: 'copy',
                    text: 'copy',
                    className: 'btn btn-primary',
                    exportOptions: {
                        columns: 'th:not(:last-child)'
                    }
                },
                {
                    extend: 'csv',
                    text: 'csv',
                    className: 'btn btn-warning',
                    exportOptions: {
                        columns: 'th:not(:last-child)'
                    }
                },
                {
                    extend: 'excel',
                    text: 'excel',
                    className: 'btn btn-danger',
                    exportOptions: {
                        columns: 'th:not(:last-child)'
                    }
                },
                {
                    extend: 'pdf',
                    text: 'pdf',
                    className: 'btn btn-success',
                    exportOptions: {
                        columns: 'th:not(:last-child)'
                    }
                },
                {

                    extend: 'print',
                    text: 'print',
                    className: 'btn btn-btn-info',
                    exportOptions: {
                        columns: 'th:not(:last-child)'
                    }
                }
            ]


        });
    });
<div class="row">
    <div class="col-lg-12">
        <div class="table-responsive">
            <table class="display compact dataTable">
                <thead>
                <tr>
                    <th>ID</th>
                    <th>Name</th>
                    <th>Email</th>
                    <th>Membership No</th>
                    <th>Status</th>
                    <th>Versity Session</th>
                    <th>Due Amount</th>
                    <th>Paid Amount</th>
                    <th>Created At</th>
                    <th>Last Transaction</th>
                    <th>Action</th>
                </tr>
                </thead>
                <tbody>


                </tbody>

            </table>
        </div>

    </div>
    <!-- /.col-lg-12 -->

</div>