成功的ajax响应

时间:2016-09-13 20:46:46

标签: jquery datatables datatables-1.10

我使用Datatables插件使用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验证)并且表卡住了at" Processing ..."有时或表格根本没有变化。

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

在控制台中检查网络时,我可以看到发送的ajax请求和每次响应类似的响应(总时间在600毫秒到1600毫秒之间,具体取决于返回的行数)但是我的console.log里面的dataSrc函数未被调用,控制台中没有javascript错误。是什么给了什么?

1 个答案:

答案 0 :(得分:1)

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

来自manual

  

draw

     

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