提问者:小点点

成功的ajax响应未调用datatables dataSrc函数


我正在使用Datatable插件从使用ajax属性的服务器获取表数据,并使用dataSrc属性进行转换。我的数据定义:

var my_table = $('#my_table').dataTable({
    "processing": true,
    "serverSide": true,
    "ajax": {
        "url": "/my/url",
        "type": "POST",
        "dataSrc": function(json) {
            console.log('json', json);
            return format_my_table_data(json.data);
        }
    },
    "deferLoading": found_rows,
    "data": initial_my_table_data,
    "ordering": true,
    "order": [[1, "desc"]],
    "lengthMenu": [
        [25, 50, 100],
        [25, 50, 100]
    ],
    "columns": my_table_columns
});

初始加载工作正常,有时排序列和搜索工作正常,但大多数情况下,我看到ajax调用使用有效的json成功返回(我使用jsonlint.com进行了验证),表被困在“处理…”有时候,或者桌子根本没有改变。

来自服务器的Json:{“recordsTotal”:379,“recordsFiltered”:378,“draw”:25,“data”:[{…}]}

在控制台中检查网络时,我可以看到正在发送的ajax请求和每次类似的响应(总时间在600ms到1600ms之间,具体取决于返回的行数),但我的控制台除外。未调用dataSrc函数内部的日志,并且控制台中没有javascript错误。有什么好处?


共1个答案

匿名用户

脚本应返回与请求中的draw参数值相同的draw参数。我相信它从1开始,然后随着每个请求而递增。

从手册中:

draw

此对象响应的绘图计数器-来自作为数据请求一部分发送的draw参数。请注意,出于安全原因,强烈建议您将此参数强制转换为整数,而不是简单地将它在draw参数中发送的内容回显给客户端,以防止跨站点脚本(XSS)攻击。