您的位置:首页 > 产品设计 > UI/UE

PHP+JQUEY+AJAX实现分页

2016-12-08 23:40 555 查看

HTML

<divid="list">
<ul></ul>
</div>
<divid="pagecount"></div>

CSS


#list{width:680px;height:530px;margin:2pxauto;position:relative}
#listulli{float:left;width:220px;height:260px;margin:2px}
#listulliimg{width:220px;height:220px}
#listullip{line-height:22px}
#pagecount{width:500px;margin:10pxauto;text-align:center}
#pagecountspan{margin:4px;font-size:14px}
#listulli#loading{width:120px;height:32px;border:1pxsolid#d3d3d3;
position:absolute;top:35%;left:42%;text-align:center;background:#f7f7f7
url(loading.gif)no-repeat8px8px;-moz-box-shadow:1px1px2pxrgba(0,0,0,.2);
-webkit-box-shadow:1px1px2pxrgba(0,0,0,.2);box-shadow:1px1px2pxrgba(0,0,0,.2);}


jQuery

我们先声明变量,后面的代码要用到以下变量。

varcurPage=1;//当前页码
vartotal,pageSize,totalPage;//总记录数,每页显示数,总页数

接下来,我们自定义一个函数:getData(),用来获取当前页数据。函数中,我们利用$.ajax()向后台pages.php发送POST异步请求,将当前页码以JSON格式传递给后台。

//获取数据
functiongetData(page){
$.ajax({
type:'POST',
url:'pages.php',
data:{'pageNum':page-1},
dataType:'json',
beforeSend:function(){
$("#listul").append("<liid='loading'>loading...</li>");//显示加载动画
},
success:function(json){
$("#listul").empty();//清空数据区
total=json.total;//总记录数
pageSize=json.pageSize;//每页显示条数
curPage=page;//当前页
totalPage=json.totalPage;//总页数
varli="";
varlist=json.list;
$.each(list,function(index,array){//遍历json数据列
li+="<li><ahref='#'><imgsrc='"+array['pic']+"'>"+array['title']
+"</a></li>";
});
$("#listul").append(li);
},
complete:function(){//生成分页条
getPageBar();
          
            当点击分页条中的分页链接时,调用getData(page)加载对应页码的数据。  

            $("#pagecountspana").on('click',function(){
      varrel=$(this).attr("rel");
      if(rel){
    getData(rel);
      }
        });

  
},

error:function(){
alert("数据加载失败");
}
});
}

请求成功后并返回数据,将相应的数据附给变量,并将返回的商品数据列表循环展示到对应容器#listul中。当数据完全加载完毕后,调用分页条函数getPageBar()生成分页条。

//获取分页条
functiongetPageBar(){
//页码大于最大页数
if(curPage>totalPage)curPage=totalPage;
//页码小于1
if(curPage<1)curPage=1;
pageStr="<span>共"+total+"条</span><span>"+curPage
+"/"+totalPage+"</span>";

//如果是第一页
if(curPage==1){
pageStr+="<span>首页</span><span>上一页</span>";
}else{
pageStr+="<span><ahref='javascript:void(0)'rel='1'>首页</a></span>
<span><ahref='javascript:void(0)'rel='"+(curPage-1)+"'>上一页</a></span>";
}

//如果是最后页
if(curPage>=totalPage){
pageStr+="<span>下一页</span><span>尾页</span>";
}else{
pageStr+="<span><ahref='javascript:void(0)'rel='"+(parseInt(curPage)+1)+"'>
下一页</a></span><span><ahref='javascript:void(0)'rel='"+totalPage+"'>尾页</a>
</span>";
}

$("#pagecount").html(pageStr);
}

最后,当页面第一次加载时,我们加载第一页数据即getData(1),

$(function(){
getData(1);

});


[/code]

PHP

pages.php接收每次前端页面的ajax请求,根据提交的页码pageNum值,从mysql数据库中获取数据,计算总记录数和总页数,读取对应页码下的数据列表,并将最终结果以JSON格式返回给前端页面。

include_once('connect.php');//连接数据库,略过,具体请下载源码查看

$page=intval($_POST['pageNum']);//当前页

$result=mysql_query("selectidfromfood");
$total=mysql_num_rows($result);//总记录数
$pageSize=6;//每页显示数
$totalPage=ceil($total/$pageSize);//总页数

$startPage=$page*$pageSize;//开始记录
//构造数组
$arr['total']=$total;
$arr['pageSize']=$pageSize;
$arr['totalPage']=$totalPage;
$query=mysql_query("selectid,title,picfromfoodorderbyidasclimit
$startPage,$pageSize");//查询分页数据
while($row=mysql_fetch_array($query)){
$arr['list'][]=array(
'id'=>$row['id'],
'title'=>$row['title'],
'pic'=>$row['pic'],
);
}
echojson_encode($arr);//输出JSON数据


[/code]
最后,附上Mysql表结构

CREATETABLEIFNOTEXISTS`food`(
`id`int(11)NOTNULLAUTO_INCREMENT,
`title`varchar(100)NOTNULL,
`pic`varchar(255)NOTNULL,
PRIMARYKEY(`id`)
)ENGINE=MyISAMDEFAULTCHARSET=utf8;



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: