PHP+jquery+ajax实现分页


Posted in Javascript onDecember 09, 2016

本文实例为大家分享了jquery ajax实现分页的具体代码,供大家参考,具体内容如下

HTML

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

CSS

#list{width:680px; height:530px; margin:2px auto; position:relative} 
#list ul li{float:left;width:220px; height:260px; margin:2px} 
#list ul li img{width:220px; height:220px} 
#list ul li p{line-height:22px} 
#pagecount{width:500px; margin:10px auto; text-align:center} 
#pagecount span{margin:4px; font-size:14px} 
#list ul li#loading{width:120px; height:32px; border:1px solid #d3d3d3; 
position:absolute; top:35%; left:42%; text-align:center; background:#f7f7f7 
url(loading.gif) no-repeat 8px 8px;-moz-box-shadow:1px 1px 2px rgba(0,0,0,.2); 
-webkit-box-shadow:1px 1px 2px rgba(0,0,0,.2); box-shadow:1px 1px 2px rgba(0,0,0,.2);}

jQuery

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

var curPage = 1; //当前页码 
var total,pageSize,totalPage; //总记录数,每页显示数,总页数

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

//获取数据 
function getData(page){ 
 $.ajax({ 
 type: 'POST', 
 url: 'pages.php', 
 data: {'pageNum':page-1}, 
 dataType:'json', 
 beforeSend:function(){ 
 $("#list ul").append("<li id='loading'>loading...</li>");//显示加载动画 
 }, 
 success:function(json){ 
 $("#list ul").empty();//清空数据区 
 total = json.total; //总记录数 
 pageSize = json.pageSize; //每页显示条数 
 curPage = page; //当前页 
 totalPage = json.totalPage; //总页数 
 var li = ""; 
 var list = json.list; 
 $.each(list,function(index,array){ //遍历json数据列 
 li += "<li><a href='#'><img src='"+array['pic']+"'>"+array['title'] 
 +"</a></li>"; 
 }); 
 $("#list ul").append(li); 
 }, 
 complete:function(){ //生成分页条 
 getPageBar();











当点击分页条中的分页链接时,调用getData(page)加载对应页码的数据。







$("#pagecount span a").on('click',function(){ 
 


 var rel = $(this).attr("rel"); 
 


if(rel){ 
 

 getData(rel); 
 


} 
 



 }); 

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

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

//获取分页条 
function getPageBar(){ 
 //页码大于最大页数 
 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><a href='javascript:void(0)' rel='1'>首页</a></span> 
 <span><a href='javascript:void(0)' rel='"+(curPage-1)+"'>上一页</a></span>"; 
 } 
 
 //如果是最后页 
 if(curPage>=totalPage){ 
 pageStr += "<span>下一页</span><span>尾页</span>"; 
 }else{ 
 pageStr += "<span><a href='javascript:void(0)' rel='"+(parseInt(curPage)+1)+"'> 
 下一页</a></span><span><a href='javascript:void(0)' rel='"+totalPage+"'>尾页</a> 
 </span>"; 
 } 
 
 $("#pagecount").html(pageStr); 
}

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

$(function(){ 
 getData(1); 
 
});

PHP

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

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


$page = intval($_POST['pageNum']); //当前页 
 
$result = mysql_query("select id from food"); 
$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("select id,title,pic from food order by id asc limit 
$startPage,$pageSize"); //查询分页数据 
while($row=mysql_fetch_array($query)){ 
 $arr['list'][] = array( 
 'id' => $row['id'], 
 'title' => $row['title'], 
 'pic' => $row['pic'], 
 ); 
} 
echo json_encode($arr); //输出JSON数据

最后,附上Mysql表结构

CREATE TABLE IF NOT EXISTS `food` ( 
 `id` int(11) NOT NULL AUTO_INCREMENT, 
 `title` varchar(100) NOT NULL, 
 `pic` varchar(255) NOT NULL, 
 PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

精彩专题分享:jquery分页功能操作 JavaScript分页功能操作

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS Array对象入门分析
Oct 30 Javascript
客户端限制只能上传jpg格式图片的js代码
Dec 09 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
Oct 18 Javascript
深入分析js中的constructor和prototype
Apr 07 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
Jan 17 Javascript
jquery解决客户端跨域访问问题
Jan 06 Javascript
jquery移动点击的项目到列表最顶端的方法
Jun 24 Javascript
JavaScript驾驭网页-获取网页元素
Mar 24 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
May 09 Javascript
JavaScript中数组的22种方法必学(推荐)
Jul 20 Javascript
深入理解js中的加载事件
Feb 08 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
Mar 29 Javascript
javascript垃圾收集机制的原理分析
Dec 08 #Javascript
基于JS实现的随机数字抽签实例
Dec 08 #Javascript
利用js+css+html实现固定table的列头不动
Dec 08 #Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
Dec 08 #Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
Dec 08 #Javascript
通过Ajax使用FormData对象无刷新上传文件方法
Dec 08 #Javascript
js倒计时小实例(多次定时)
Dec 08 #Javascript
You might like
php读取目录及子目录下所有文件名的方法
2014/10/20 PHP
php 修改上传文件大小限制实例详解
2016/10/23 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
js 表单验证方法(实用)
2009/04/28 Javascript
js下通过prototype扩展实现indexOf的代码
2010/12/08 Javascript
javascript上传图片前预览图片兼容大多数浏览器
2013/10/25 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
Bootstrap Multiselect 常用组件实现代码
2017/07/09 Javascript
webpack开发跨域问题解决办法
2017/08/03 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
vue短信验证性能优化如何写入localstorage中
2018/04/25 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
Python升级提示Tkinter模块找不到的解决方法
2014/08/22 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
斯福泰克软件测试面试题
2015/02/16 面试题
网络程序员自荐信
2014/01/25 职场文书
《小小雨点》教学反思
2014/02/18 职场文书
买卖车协议书
2014/04/21 职场文书
护士自我推荐信范文
2015/03/24 职场文书
python开发飞机大战游戏
2021/07/15 Python