数据表在发送数据进行渲染之前获取ajax响应标头

时间:2018-12-14 17:31:07

标签: javascript jquery ajax datatables

我对此线程中发布的问题有一个相同的问题-https://datatables.net/forums/discussion/41210/how-to-get-recordstotal-from-response-header

基本上,我有一个API(我无法控制或修改)向我发送数据数组。我可以通过indexpageLength进行分页。我通过使用ajax.data回调函数来处理了 DataTables

问题是,API仅返回数据数组,而其他分页信息(如TotalCount)在响应标头中发送。在ajax.dataFilter回调中,我只能访问从服务器返回的数据,而不能访问响应头。

我尝试使用建议的答案,但对我而言它不起作用,我在json回调中相应地修改了.on('xhr.dt')对象,但无济于事,分页UI无效能够计算页脚状态。这是代码:

$("#table")
    .on('xhr.dt', function (evt, settings, json, xhr) {
        var data = json.slice(0); // the array of data i receive from the server. I'm cloning it here
        json = {
            recordsTotal: parseInt(xhr.getResponseHeader('Total'), 10),
            recordsFiltered: parseInt(xhr.getResponseHeader('Filtered'), 10),
            data: data
        }
    })
    .dataTable({
        columns: colsDef,
        scrollX: true,
        processing: true,
        serverSide: true,
        ajax: {
            url: url,
            async: true,
            contentType: "application/json",
            data: function (tableData) {
                return {
                    page: 'index-' + tableData.start,
                    pageSize: tableData.length
                }
            }
        },
        searching: false,
        iDisplayLength: pageSize,
        bLengthChange: false,
        pagingType: "full"
    });

0 个答案:

没有答案