素材牛VIP会员
datatbales 服务器端处理模式的分页问题
 Ro***ng  分类:JavaScript  人气:905  回帖:1  发布于6年前 收藏

datatables开启服务器端处理模式,分页的时候就不好使了
具体症状:
如果设置了每页的显示条数,比如20条,那么第2页的数据还是从11条开始取,求解,谢谢诸位了
第一页的数据

第二页的数据

前端配置:

var dataTable=$('#list').DataTable({
    serverSide: true,
    ajax: {
        type:'post',
        data:function(d){
            d.length=20;
        },
        url:'data_server.php',
    },
    columns:[
        {data:'food_id'},
        {data:'food_name'},
        {data:'food_price'},
        {
            data:function(data,type,row,meta){
                return "<a href='del?id="+data.food_id+"'>删除</a>";
            }
        }
    ],
    pagingType: "full_numbers",
    language:{
        paginate:{
            first:'首页',
            last:'末页',
            previous:'上一页',
            next:'下一页',
        },
        lengthMenu:"显示 _MENU_ 条记录",
        zeroRecords:"未找到匹配记录",
        info:"显示 _START_ 到 _END_ 的 _TOTAL_ 条记录",
        infoEmpty:"显示 0 到 0 的 0 条记录",
        infoFiltered:"(总共从 _MAX_ 条记录中过滤)",
        search:'搜索:',
    },
});

PHP代码:

try{
    $pdo=new PDO("mysql:host=localhost;dbname=online","root","");
}catch(PDOException $e){
    exit($e->getMessage());
}
$pdo->query("set names utf8");
$sql="select count(food_id) as total from online_food";
$stmt=$pdo->prepare($sql);
if($stmt->execute()){
    $recordsTotal=$stmt->fetch(PDO::FETCH_ASSOC)['total'];
}
$sql="select food_id,food_name,food_price from online_food limit {$_POST['start']},{$_POST['length']}";
$stmt=$pdo->prepare($sql);
$list=array();
if($stmt->execute()){
    while($row=$stmt->fetch(PDO::FETCH_ASSOC)){
        $list[]=$row;
    }
}
$data=array(
    'draw'=>$_POST['draw'],
    'recordsTotal'=>$recordsTotal,
    'recordsFiltered'=>$recordsTotal,
    'data'=>$list
);
echo json_encode($data);

版本:1.10.15

讨论这个帖子(1)垃圾回帖将一律封号处理……

Lv2 入门
zz***60 技术总监 6年前#1
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取