显示0到0的0条记录(从NaN总条目中筛选)

时间:2017-01-18 15:44:09

标签: javascript datatables

我使用的是jQuery DataTables 1.10.12版。以下是我的相关代码

// initialize datatable
jQuery('#taskTable').DataTable( {
    "bProcessing": true,
    "bServerSide": true,
    "bInfo": true,
    "bPaginate": true,
    "bLengthChange":false,
    "pageLength": 10,
    "sAjaxDataProp":"serverPageDataModelBean.data" 
});

正在显示数据并且分页正在运行。但是,当我设置"bInfo": true时,我收到以下消息:

  

显示0个条目中的0到0(从NaN总条目中过滤掉)

并且我的“下一步”按钮不起作用。在serverPageDataModelBean中,我发送{"recordsTotal":12,"recordsFiltered":12,"data":[]},其中数据不为空。

有人可以告诉我出了什么问题吗?

4 个答案:

答案 0 :(得分:4)

原因

您的服务器端响应缺少draw参数,该参数应与请求中的draw参数具有相同的值。当发生这种情况时,jQuery DataTables会丢弃数据。

  

draw

     

此对象作为响应的绘制计数器 - 来自作为数据请求的一部分发送的draw参数。

返回draw参数,其值与请求中的draw参数值相同。

LINKS

有关详细信息,请参阅Server-side processing - Returned data

答案 1 :(得分:4)

我知道这太晚了,但我发布这个以防万一有人绊倒了。 答案是你需要像这样将服务器端设置为false" serverSide":false。

答案 2 :(得分:2)

在服务器端(例如php)处理时,对空数据的响应将是...

echo json_encode(
        array(
        'draw' => $_POST['draw'],
        'data' => [],
        'recordsFiltered' =>  0,
        'recordsTotal' => 0
        )
     );

在纯json中

{"draw":1,"data":[],"recordsFiltered":0,"recordsTotal":0}

简而言之,无论什么2020年的数据表在服务器端处理时都需要此参数。

答案 3 :(得分:1)

如果您使用的是serverside:True,则将其删除或写入serverside:false

例如:

$(document).ready(function() {
             $('#example1').dataTable( {
        "ajax": {
            "url": "view_results",
            "type": "POST"
        },
        'order':[]
    } );
        });