将总行数传递给Datatables

时间:2017-10-06 14:30:38

标签: jquery datatable

我有一个数据表实现,它执行ajax请求$_SERVER['PHP_SELF']。我运行查询以获取页面加载时的所有记录。但是,第一个ajax调用将再次无限制地执行此操作。我想知道是否可以在初始ajax请求中传递总行数。这是我的数据表代码:

var myTable = $('.datatable').DataTable({
    "serverSide": true,
    "processing": true,
    "paging": true,
    "searching": { "regex": true },
    "lengthMenu": [ [10, 25, 50, 100, -1], [10, 25, 50, 100, "All"] ],
    "pageLength": 10,
    "ajax": {
        "type": "POST",
        "url": "<?= $_SERVER['PHP_SELF']; ?>",
        "dataType": "json",
        "contentType": 'application/json; charset=utf-8',
        "data": function (data) {
            // Grab form values containing user options
            var form = {};
            $.each($("form").serializeArray(), function (i, field) {
                form[field.name] = field.value || "";
            });
            // Add options used by Datatables
            var info = { "start": 0, "length": 10, "draw": 1 };
            $.extend(form, info);
            return JSON.stringify(form);
        },
        "complete": function(response) {
            console.log(response);
       }
    }
});

1 个答案:

答案 0 :(得分:1)

我找到了解决我的问题的方法,这似乎是多个问题。

  1. recordsTotal认为它应该是我想在我的ajax调用中检索的行数。{/ p>

  2. "contentType": 'application/json; charset=utf-8',似乎打破了我的ajax请求。

  3. 我现在使用以下方式传递总行数:

    &#34;数据&#34;:{     &#34; totalRows&#34;:&#34;&#34;, },

  4. 我现在最初使用对查询结果的计数设置$totalData,然后使用$_REQUEST覆盖它。