Yajra DataTable(搜索框和加载数据)的响应在15秒左右非常慢。和更多

时间:2019-04-12 07:12:20

标签: php ajax laravel datatable yajra-datatable

我在Laravel中使用Yajra DataTable。但是桌子的桌子很小,大约需要15秒甚至更长的时间。原因是for循环以及addColumn中的if条件,这使其运行缓慢。

我只知道这种方式(通过使用addColumn)将html标记嵌入表中。虽然我需要根据某些条件放置选择标签,按钮和其他链接。这些标记使加载表非常缓慢。

这是我的Ajax代码:

var allUsersTable = $('.allleads').DataTable({
                processing: true,
                serverSide: true,
                ajax: {
                    url: "customer/GetAllcusts",
                },
                columns: [
                    {"data": "note", "name": "note", orderable: false, searchable: false},
                    {"data": "sms", "name": "sms"},
                    {"data": "assign", "name": "assign"},
                ],
                bSort: false,
                dom: 'Bfrtip',
                buttons: [
                     'excel', 'pdf', 'print', 'colvis'
                ]
            });

,这里是控制器中用于加载数据的功能:

return DataTables::of($allClients)
            ->addColumn('note', function ($allClient) {
                return '<a style="cursor: pointer" title="Add Note" onclick="addNotes(' . $allClient->id . ',' . $allClient->quote_id . ',this)"><i class="material-icons">event_note </i></a>';
            })
            ->addColumn('sms', function ($allClient) {
                return '<a style="cursor: pointer" title="Send SMS" id="send_smsclick" onclick="send_smsclick(' . $allClient->id . ',' . $allClient->primary_number . ')" ><i class="material-icons notranslate">message</i></a>';
            })
->addColumn('assign', function ($allClient) use ($user_status, $all_users) {

                if ($user_status == 'Admin') {
                    $options = '<option hidden="true">Select Stuff...</option>';
                    foreach ($all_users as $users) {
                        if ($allClient->user_id == $users->id) {
                            $options = $options . '<option value = "' . $users->id . '" disabled selected >' . $users->name . '</option >';
                        } else {
                            $options = $options . '<option value = "' . $users->id . '" >' . $users->name . '</option>';
                        }
                    }

                    return '<select name="user_id" class="form-control activity_status"
                            onchange="assign_users(' . $allClient->id . ', this)" >' . $options . ' </select>';


                } else {
                    $query = User::find($allClient->user_id);
                    return $query->name;
                }

            })
            ->rawColumns(['note', 'sms', 'assign'])
            ->make(true);

我将不胜感激任何可以提高加载表速度以及对数据进行午餐的速度。

谢谢你

1 个答案:

答案 0 :(得分:-2)

更改:

processing: true,
serverSide: true,

至:

processing: false,
serverSide: false,