标题上的数据表排序列单击服务器端

时间:2018-06-25 20:26:04

标签: javascript php datatables datatables-1.10

我正在尝试使dataTables与标题的单击一起使用。当单击标题时,收到消息:“正在处理...”

您可以在这里查看我的代码

JS:

$(document).ready(function() {
    var table = $('#example').DataTable( {
                    processing: true,
                    serverSide: true,
                    ajax: "assets/ajaxGetDataIO.php",
                    bFilter: false,
                    bPaginate: false,
                    bLengthChange: false
                    } );
} );

HTML代码:

<table id="example" class="display" style="width:100%">
    <thead>
    <tr>
        <th>nameA</th>
        <th>nameB</th>
        <th>value123</th>
        <th>red</th>
        <th>Temp</th>
        <th>Time</th>
    </tr>
    </thead>
    <tfoot>
    <tr>
        <th>nameA</th>
        <th>nameB</th>
        <th>value123</th>
        <th>red</th>
        <th>Temp</th>
        <th>Time</th>
    </tr>
    </tfoot>
</table>

和ajaxGetDataIO.php

$rows = $db->rawQuery($myquery);

$columns = array(
                array("db"=>"nameA", "dt"=>0),
                array("db"=>"nameB", "dt"=>1),
                array("db"=>"value123", "dt"=>2),
                array("db"=>"red", "dt"=>3),
                array("db"=>"temperature", "dt"=>4),
                array("db"=>"Timestamp", "dt"=>5)
            );

$array = array(
            "draw"            => 1,
            "recordsTotal"    => $db->totalCount,
            "recordsFiltered" => $db->totalCount,
            "data"            => data_output($columns, $rows)
        );

echo json_encode($array);

function data_output ( $columns, $data ) {
    $out = array();
    for ( $i=0, $ien=count($data) ; $i<$ien ; $i++ ) {
        $row = array();

        for ( $j=0, $jen=count($columns) ; $j<$jen ; $j++ ) {
            $column = $columns[$j];
            // Is there a formatter?
            if ( isset( $column['formatter'] ) ) {
                $row[ $column['dt'] ] = $column['formatter']( $data[$i][ $column['db'] ], $data[$i] );
            }
            else {
                $row[ $column['dt'] ] = $data[$i][ $columns[$j]['db'] ];
            }
        }
        $out[] = $row;
    }
    return $out;
}

数据表正确显示了数据,我之前在名称A的查询中对其进行了排序,但是当我单击标题标题列(例如nameB或value123 ...)以根据该列进行排序时,我得到了我告诉你的消息:“正在处理...”

这是我第一次将datatables与serverSide中的数据一起使用...我想我错过了一些事情。

有人可以帮我吗?

0 个答案:

没有答案