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 相关文章推荐
JavaScript中的其他对象
Jan 16 Javascript
JS中的构造函数详细解析
Mar 10 Javascript
JavaScript实现打字效果的方法
Jul 10 Javascript
jQuery实现的Div窗口震动效果实例
Aug 07 Javascript
jquery实现漂亮的二级下拉菜单代码
Aug 26 Javascript
javascript添加前置0(补零)的几种方法
Jan 05 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
Sep 19 Javascript
ES6扩展运算符用法实例分析
Oct 31 Javascript
详解vue移动端日期选择组件
Feb 22 Javascript
原生JS实现$.param() 函数的方法
Aug 10 Javascript
js Math数学简单使用操作示例
Mar 13 Javascript
vue实现从外部修改组件内部的变量的值
Jul 30 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新手上路(十)
2006/10/09 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
php提交post数组参数实例分析
2015/12/17 PHP
Laravel框架路由管理简单示例
2019/05/07 PHP
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
js console.log打印对像与数组用法详解
2016/01/21 Javascript
JQuery 的跨域方法推荐_可跨任何网站
2016/05/18 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
使用Vue.js创建一个时间跟踪的单页应用
2016/11/28 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
2017/01/04 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
jQuery plugin animsition使用小结
2017/09/14 jQuery
vue.js实现简单轮播图效果
2017/10/10 Javascript
NodeJS实现视频转码的示例代码
2017/11/18 NodeJs
JavaScript学习笔记之数组基本操作示例
2019/01/09 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
python中字符串类型json操作的注意事项
2017/05/02 Python
matplotlib简介,安装和简单实例代码
2017/12/26 Python
Python中Threading用法详解
2017/12/27 Python
Python使用functools实现注解同步方法
2018/02/06 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
Python如何筛选序列中的元素的方法实现
2019/07/15 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
2019/08/14 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
纽约海:Sea New York
2018/11/04 全球购物
法国足球商店:Footcenter
2019/07/06 全球购物
生日主持词
2014/03/20 职场文书
施工员岗位职责范本
2015/04/11 职场文书
Python turtle实现贪吃蛇游戏
2021/06/18 Python
Vue-Element-Admin集成自己的接口实现登录跳转
2021/06/23 Vue.js