使用PHP的Datatables服务器端脚本问题

时间:2014-07-07 06:46:18

标签: php jquery datatable datatables php-5.4

我遇到与数据表相关的问题。我有大量的记录(45,000 +)。所以我在"服务器端"使用数据表。编码

问题在于,它在下面的代码中显示以下错误:

ERROR:

  

未捕获的TypeError:无法设置属性' nTf'未定义的

// allows cells to be used for multiple columns using colspan
    if ( tfoot !== null ) {
        var cells = oSettings.aoFooter[0];

        for ( i=0, ien=cells.length ; i<ien ; i++ ) {
            column = columns[i];
            column.nTf = cells[i].cell;


            if ( column.sClass ) {
                $(column.nTf).addClass( column.sClass );
            }

我正在使用的JavaScript代码是:

$(document).ready(function() {
    $('#authorsdatatab').dataTable( {
        "bPaginate": true,
        "processing": true,
        "serverSide": true,     
        "sAjaxSource": "../assets/common/authorsServerSide.php",
});
  });

我用于显示服务器端脚本中的列的数据是:

$aColumns = array( 'a_ID', 'a_name', 'a_birth', 'a_death' );

/* Indexed column (used for fast and accurate table cardinality) */
$sIndexColumn = "a_ID";

/* DB table to use */
$sTable = "authors";

3 个答案:

答案 0 :(得分:8)

如果其他人遇到此问题,我发现如果您执行以下操作会发生这种情况:

  • 使用服务器端处理
  • 在HTML中指定tfoot
  • 在DataTables Javascript设置中定义一个列数组,其中不包含tfoot中每个单元格的一个列定义

解决方案是确保Javascript中的列定义与HTML中的实际单元格数相匹配。此问题仍与新的DataTables API相关。

答案 1 :(得分:2)

检查tfoot列号是否在tbody中。 可能你在tfoot中有比在tbody中更多的列

答案 2 :(得分:0)

我遇到过这个问题两次,两次都是因为我的<thead><tfoot>中的列数多于<tbody>中的列数。