【问题标题】:DataTables Not Applying per page filtering数据表不应用每页过滤
【发布时间】:2014-08-26 19:51:59
【问题描述】:

我正在尝试使用DataTables Server Side Processing

目前,即使显示设置为 10、25 等,我也会返回 1000 行(作为显示)

jQuery:

$(document).ready(function() {
    $('#paginatedTableSS').dataTable( {
      "processing": true,
      "serverSide": true,
      "ajax": "script.php"
      } );
} );

script.php:

$i = 0;
$test = array();
$test['draw'] = 1;
$test['recordsTotal'] = 200000;
$test['recordsFiltered'] = 8;
$test['data'] = array();
while($i<=20){
  array_push($test['data'], ['test1 ' . $i, 'test2 ' . $i, 'test3 ' . $i, 'test4 ' . $i]);
  $i=$i+1;
}
echo json_encode($test);

我的最终目标是将start 传递给脚本,以便脚本可以使用它来返回正确的数据。但目前我认为在继续之前我需要解决上述问题。但我不确定它有什么问题或如何调试它。

【问题讨论】:

    标签: javascript php jquery ajax datatable


    【解决方案1】:

    aaData 似乎表明您正在使用旧数据表。如果是这种情况,您就错过了iTotalRecordsiTotalDisplayRecordssEcho

    $test['iTotalRecords'] = count($test['aaData']);
    $test['iTotalDisplayRecords'] = count($test['aaData']);
    $test['Echo'] = $_REQUEST['sEcho'];
    

    http://legacy.datatables.net/usage/server-side

    如果您不使用旧数据表,则需要改用 datarecordsrecordsFiltered(如链接中所引用)

    编辑

    您的表格显示 1000 行的原因是因为这是您要返回的行数。使用lengthstart 参数来确定要返回的行,即

    $start = (isset($_REQUEST['start']) && is_numeric($_REQUEST['start']))
        ? $_REQUEST['start'] : 0;
    
    $length = (isset($_REQUEST['length']) && is_numeric($_REQUEST['length']))
        ? $_REQUEST['length'] : 100;
    
    $test = array('data'=>array(), 'recordsTotal', 'draw', 'recordsFiltered');
    
    for($i=$start; $i<=$length; $i++) {
      array_push($test['data'], array('id'=>$i,'date'=>$i,'status'=>$i,'options'=>$i));  
    }
    
    $test['recordsTotal'] = 200000;
    $test['draw'] = 1;
    $test['recordsFiltered'] = count($test['data']);
    echo json_encode($test);
    

    【讨论】:

    • 你是对的,我试图混合旧有和新的,我已经解决了这个问题并更新了我上面的问题。核心问题依然存在。
    • @AndrewWilson 您的 javascript 仍在使用旧语法
    • 我没有看到 Columns 的新语法,你指的是这个吗?
    • jQuery 应该是什么样子,因为我无法通过添加 "length":52, 来让它传递长度/开始
    • 如果我删除 serverSide 我可以获得长度/开始推送。所以只有当我使用 serverSide 时
    猜你喜欢
    • 1970-01-01
    • 2014-06-27
    • 2015-07-01
    • 2022-07-14
    • 1970-01-01
    • 2023-03-20
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多