DataTables延迟加载列选项

时间:2015-07-20 14:30:17

标签: javascript jquery datatables datatables-1.10

我正在使用jQuery DataTables的服务器端处理模式("serverSide": true)。我正在使用deferred loading option来优化页面加载时间。

我也在使用columns选项,但是当我自己定义columns选项时会出现一些冲突。当第一次调用没有任何内容时,它会尝试查找数据源,这是延迟加载的整个点。

  

未捕获错误:DataTables警告:table id = table - 第0行请求的未知参数'id'。有关此错误的详细信息,请参阅http://datatables.net/tn/4

初始化代码:

function initialize_table(inital_length)
{
    table_options = {
        "serverSide": true,
        "ajax": {
            "url": '/merchant/all/',
            "type": 'POST',
            "deferRender": true,
            // data: JSON.stringify(data),
            // contentType: "application/json",
        },
        // "order": [[0, 'asc']]
        "deferRender": true,
        "processing": true,
        "pageLength": 50,
        "deferLoading": inital_length,
        "lengthMenu": [ 20, 50, 100, 200, 500 ],
        "columnDefs": [
            {
                // "class": "details-control",
                'data': 'gr_id', // response[data]
                'name': 'gr_id', 
                'orderable': true,
                'search': {'regex': false, 'value': ''},
                'searchable': true,
                "targets": 0,
            },
            { 
                'data': "name",
                'name': 'name',
                'orderable': true,
                'search': {'regex': false, 'value': ''},
                'searchable': true,
                "targets": 1,

            },
            { 
                'data': "address",
                'name': 'address',
                'orderable': false,
                'search': {'regex': false, 'value': ''},
                'searchable': true,
                "targets": 2,
            },
            {
                'data': "category",
                'name': 'category',
                'orderable': true,
                'search': {'regex': false, 'value': ''},
                'searchable': true,
                "targets": 3,
            },
            {
                'data': "chain",
                'name': 'chain',
                'orderable': true,
                'search': {'regex': false, 'value': ''},
                'searchable': true,
                "targets": 4,
            },
            {
                'data': "enabled",
                'name': 'enabled',
                'orderable': true,
                'search': {'regex': false, 'value': ''},
                'searchable': true,
                "targets": 5,
            },
            {
                'data': 'status',
                'name': 'status',
                'orderable': true,
                'search': {'regex': false, 'value': ''},
                'searchable': true,
                "targets": 6,
            }
        ],
    }
    var merchant_table = $("#merchant-table").DataTable(table_options);
}

1 个答案:

答案 0 :(得分:3)

在DataTables论坛中使用deferLoading选项和column.data的错误是once reported。我能够使用v1.10.2 from CDN重现该错误,但不能使用v1.10.3以后,所以我们可以说这已经修复了。这可能是由new feature能够使用columns.data和DOM源数据将行信息读入对象而不是数组”。

所以你可以:

1)首先确保使用latest version

2)检查您的JSON响应。根据您的评论,您使用的是array data source type,但在设置column.data选项时,您必须改为使用object data source type