服务器端数据表仅在开始时返回数据

时间:2019-06-04 19:48:56

标签: javascript php laravel datatables yajra-datatable

我正在使用数据表通过Laravel和Yajra的插件显示一个大约15〜20 k行的表。显示信息不是问题。当我尝试使用按钮导出数据(即导出到Excel电子表格)时出现问题:如果我尝试导出到PDF或XLSX且具有足够行的查询,浏览器将冻结(当它很小时,没有问题)。

后来我意识到,即使我使用ajax从一开始就提取数据,但它并不是在使用服务器端处理,而是一次获取所有内容。因此,我尝试添加“ serverSide:true”,当我这样做时,仅加载了10个条目。没有其他东西被加载。

控制器代码:

public function getDatatable()
    {

        return Datatables::of(Dev_BCH::query())->make(true);
    }

JavaScript代码:

var table = $('#BCHtable').DataTable( {
        orderCellsTop: true,
        fixedHeader: false,
        responsive: true,
        oSearch: {"bSmart": false},
        ajax: "{{ route('datatableInvBCH') }}",      
        dom: 'Bfrtip',
        buttons: {
            buttons: [
                { extend: 'pdfHtml5', className: 'pdfButton', orientation: 'landscape' },
                $.extend( true, {}, buttonCommon, {
                extend: 'excelHtml5', className: 'excelButton',
                text: 'Excel filtrado'
                } ),
                {
                text: 'Excel completo',
                action: function ( e, dt, node, config ) {
                    $('#loader').show();
                    $('#holder').show();
                    getExcel("{{route('exportBCH')}}");

                }
            }
            ]
        },
        language: 
                {"url": "{{asset('assets/dt/Spanish.lang')}}"}
        ,
        columns: [
            {data: 'id', name: 'id', visible: false},    
            {data: 'alias', name: 'alias'},    
        { data: 'rotulo', name: 'rotulo'},
        { data: 'serie', name: 'serie'},
        { data: 'tipo', name: 'tipo'},
        { data: 'marca', name: 'marca'},
        { data: 'modelo', name: 'modelo'},
        { data: 'nombre', name: 'nombre'},
        { data: 'rut', name: 'rut'},
        { data: 'region', name: 'region'},
        { data: 'site', name: 'site', width: "100px"},
        { data: 'fecha_reporte', name: 'fecha_reporte', visible:false},
        { data: 'ultima_conexion', name: 'ultima_conexion', visible:false}
        ],
...
});

有什么我可以尝试至少能够下载过滤的数据在服务器端的,也许是我自己做的。

0 个答案:

没有答案