jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解


Posted in Javascript onSeptember 27, 2015

本文使用jQuery,结合PHP和Mysql,通过实例讲解如何实现Ajax数据加载效果。

jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解

HTML

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

页面中,#list用来展示数据列表,包括本例要展示的商品图片和标题,#pagecount用来展示分页条,即本例中的上一页、下一页。
当然,别忘了,在head中预先载入jquery库文件。
CSS
我们需要将商品图片进行排列,以及设置分页条样式,当然这些样式的设计可以根据读取成功后的数据进行设置,本例中我们先把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(); 
  }, 
  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),当点击分页条中的分页链接时,调用getData(page)加载对应页码的数据。我们通过getPageBar()函数已预先在翻页连接的属性rel中在埋入了数字页码。

$(function(){ 
 getData(1); 
 $("#pagecount span a").live('click',function(){ 
  var rel = $(this).attr("rel"); 
  if(rel){ 
   getData(rel); 
  } 
 }); 
});

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数据

这时再回到前端页面,即看到数据已分号页,点击“下一页”看看是不是你要的效果,查看DEMO,分页条的样式大家可以自己定制,我给的是最基本的样式。
最后,附上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+Ajax+PHP+Mysql实现分页显示数据实例讲解,Ajax分页效果让您的网站数据加载显得非常流畅,希望这篇文章对大家的学习有所帮助。

Javascript 相关文章推荐
jquery $(document).ready() 与window.onload的区别
Dec 28 Javascript
js防止页面被iframe调用的方法
Oct 30 Javascript
jQuery Dialog 取消右上角删除按钮事件
Sep 07 Javascript
JavaScript使用Range调色及透明度实例
Sep 25 Javascript
AngularJS 与百度地图的结合实例
Oct 20 Javascript
图文详解Javascript中的上下文和作用域
Feb 15 Javascript
ztree实现权限横向显示功能
May 20 Javascript
浅谈vue路径优化之resolve
Oct 13 Javascript
Node.js模块全局安装路径配置方法
May 17 Javascript
从源码里了解vue中的nextTick的使用
Nov 22 Javascript
基于element-ui组件手动实现单选和上传功能
Dec 06 Javascript
JavaScript获取页面元素的常用方法详解
Sep 28 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
Sep 27 #Javascript
jQuery获取checkboxlist的value值的方法
Sep 27 #Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
Sep 27 #Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
Sep 27 #Javascript
asp知识整理笔记3(问答模式)
Sep 27 #Javascript
JS实现带鼠标效果的头像及文章列表代码
Sep 27 #Javascript
JS实现仿新浪黄色经典滑动门效果代码
Sep 27 #Javascript
You might like
《OVERLORD》第四季,终于等到你!
2020/03/02 日漫
摩卡咖啡
2021/03/03 咖啡文化
mysql 字段类型说明
2007/04/27 PHP
PHP 判断变量类型实现代码
2009/10/23 PHP
8个出色的WordPress SEO插件收集
2011/02/26 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
PHP读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
Django 中 cookie的使用
2017/08/17 PHP
PHP实现网站访问量计数器
2017/10/27 PHP
Yii2语言国际化的配置教程
2018/08/19 PHP
JavaScript事件列表解说
2006/12/22 Javascript
情人节专属 纯js脚本1k大小的3D玫瑰效果
2012/02/11 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
2016/04/17 Javascript
BootStrap Typeahead自动补全插件实例代码
2016/08/10 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
详解vue中移动端自适应方案
2019/05/05 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
vue 实现tab切换保持数据状态
2020/07/21 Javascript
进一步探究Python的装饰器的运用
2015/05/05 Python
Python logging管理不同级别log打印和存储实例
2018/01/19 Python
python多进程实现文件下载传输功能
2018/07/28 Python
python 构造三维全零数组的方法
2018/11/12 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
详解Python是如何实现issubclass的
2019/07/24 Python
django创建简单的页面响应实例教程
2019/09/06 Python
Django重设Admin密码过程解析
2020/02/10 Python
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
物流专员岗位职责
2014/02/17 职场文书