当我们展现大量数据的时候,一般用会刷新页面传入不同参数方式进行数据分页,但是每次刷页面定位就会在头部,如果用瞄点或者更好的js动画进行重新定位,也会有页面刷新时闪屏的现象,为了追求更好的用户体验,我们结合ajax的局部刷新做一个不刷新页面的的分页
functionpage_ajax($total,$page,$page_size='')
{
//$total:总数
//$page:传递过来的当前页的值,第八页$page=8;
//$page_size:每页显示的数据的数目
//$url:传递的地址,默认为当前页面
//$max_length:分页代码时候,中间的分页数的一半
$page=($page1)?1:$page;
$page_size=$page_size?$page_size:10;
$url=$url?$url:$_SERVER['PHP_SELF'];
//$url=str_replace('.html','',$url);
$max_length=$max_length?$max_length:5;
$start=$page?($page-1)*$page_size:0;
$total_page=ceil($total/$page_size);
$page_table='';
//awaysinthepages
$page_table='pclass=nav-page';
if($total0){
//显示第一页
if($page1){
$page_table.='ahref=###onclick=javascript:get_log('.($page-1).')class=previouslt;/a';
}
if($page==1)
{
$page_table.='ahref=###onclick=javascript:get_log(1)class=on1/a';
}
else
{
$page_table.='ahref=#sku_listonclick=javascript:get_log(1)1/a';
}
//循环中间页码
if($total_page$max_length*2)
{
$loop_start=2;
$loop_end=$total_page-1;
}
else
{
$loop_start=$page-$max_length;
$loop_start=($loop_start2)?2:$loop_start;
$loop_end=$page+$max_length;
$loop_end=($loop_end$max_length*2)?$max_length*2:$loop_end;
$loop_end=($loop_end$total_page)?$total_page-1:$loop_end;
}
//...link
$link_start=(($loop_start-$max_length)2)?2:$loop_start-$max_length;
$link_end=(($loop_end+$max_length)$total_page)?$total_page:$loop_end+$max_length;
if($loop_start2)
{
$page_table.='ahref=###onclick=javascript:get_log('.$link_start.').../a';
}
//中间链接
for($i=$loop_start;$i=$loop_end;$i++)
{
if($page==$i)
{
$page_table.='ahref=###onclick=javascript:get_log('.$i.')class=on'.$i.'/a';
}
else
{
if($i$total_page){//i不等于总页数$page_table.='ahref=###onclick=javascript:get_log('.$i.')'.$i.'/a';
}
}
}
if($loop_end$total_page-1)
{
$page_table.='ahref=###onclick=javascript:get_log('.$link_end.').../a';
}
//末页链接
if($total_page!=1)
{
if($page==$total_page)
{
$page_table.='ahref=###onclick=javascript:get_log('.$total_page.')class=on'.$i.'/a';
}
else
{
$page_table.='ahref=###onclick=javascript:get_log('.$total_page.')'.$total_page.'/a';
}
}
}
//输出分页代码
if($total_page$page){
$page_table.='
ahref=###onclick=javascript:get_log('.($page+1).')class=nexttitle=下一页gt;/a';
}else{
$page_table.='';
}
$page_table.='/p';
return$page_table;
}
上面是拼接链接的处理函数。
在控制器中通过传递的n的页码数查询数据,将数据返回到前端
$page=I('page')1?I('page'):1;
$page_size=10;//每页显示数量
$start=($page-1)*$page_size;
$ModelObj-where($map)-limit($start,$page_size)-order('create_timedesc,id')-select();//echo$ModelObj-_sql();//查询数据
$this-page=page_ajax($total,$page);//分页链接
前端jq
functionget_log(n){
$.ajax({
url:url_get_pay+'?page='+n,
cache:false,
success:function(obj){
$('#log_list').html(obj);//将内容输入到容器中
},
error:function(){
ayer.msg('搜索出现错误!',{icon:5});//layer弹窗插件}
});
}