详解PHP+AJAX无刷新分页实现方法


Posted in PHP onNovember 03, 2015

PHP+AJAX无刷新分页实现代码详解,最近在看ajax 教程,就想写个简单入门的PHP+AJAX无刷新分页,我们依据ajax开发框架,代码如下:

var http_request=false;
function send_request(url){//初始化,指定处理函数,发送请求的函数
http_request=false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest){//Mozilla浏览器
http_request=new XMLHttpRequest();
 if(http_request.overrideMimeType){//设置MIME类别
 http_request.overrideMimeType("text/xml");
 }
}
else if(window.ActiveXObject){//IE浏览器
 try{
 http_request=new ActiveXObject("Msxml2.XMLHttp");
 }catch(e){
 try{
 http_request=new ActiveXobject("Microsoft.XMLHttp");
 }catch(e){}
 }
}
if(!http_request){//异常,创建对象实例失败
 window.alert("创建XMLHttp对象失败!");
 return false;
}
http_request.onreadystatechange=processrequest;
//确定发送请求方式,URL,及是否同步执行下段代码
http_request.open("GET",url,true);
http_request.send(null);
 }
 //处理返回信息的函数
 function processrequest(){
if(http_request.readyState==4){//判断对象状态
 if(http_request.status==200){//信息已成功返回,开始处理信息
 document.getElementById(reobj).innerHTML=http_request.responseText;
 }
 else{//页面不正常
 alert("您所请求的页面不正常!");
 }
}
 }
 function dopage(obj,url){
document.getElementById(obj).innerHTML="正在读取数据...";
send_request(url);
reobj=obj;
}

内容我放在一个div中显示,当翻页动作产生时,利用AJAX更新DIV达到翻页效果这是内容显示页面代码:

<?php
header("Content-type: text/html;charset=GBK");//输出编码,避免中文乱码
?>
<html>
<head>
<title>ajax分页演示</title>
<scrīpt language="javascrīpt" src="ajaxpg.js"></scrīpt>
</head>
<body>
<div id="result">
<?php
$page=isset($_GET['page'])?intval($_GET['page']):1;  //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。
$num=10;          //每页显示10条数据
$db=mysql_connect("localhost","root","7529639");   //创建数据库连接
mysql_select_db("cr_download");     //选择要操作的数据库
/*
首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,具体的公式就是
总数据库除以每页显示的条数,有余进一。
也就是说10/3=3.3333=4 有余数就要进一。
*/
$result=mysql_query("select * from cr_userinfo");
$total=mysql_num_rows($result); //查询所有的数据
$url='test.php';//获取本页URL
//页码计算
$pagenum=ceil($total/$num);         //获得总页数,也是最后一页
$page=min($pagenum,$page);//获得首页
$prepg=$page-1;//上一页
$nextpg=($page==$pagenum ? 0 : $page+1);//下一页
$offset=($page-1)*$num;          //获取limit的第一个参数的值,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。
//开始分页导航条代码:
$pagenav="显示第 <B>".($total?($offset+1):0)."</B>-<B>".min($offset+10,$total)."</B> 条记录,共 $total 条记录 ";
//如果只有一页则跳出函数:
if($pagenum<=1) return false;
$pagenav.=" <a href=javascrīpt:dopage('result','$url?page=1');>首页</a> ";
if($prepg) $pagenav.=" <a href=javascrīpt:dopage('result','$url?page=$prepg');>前页</a> "; else $pagenav.=" 前页 ";
if($nextpg) $pagenav.=" <a href=javascrīpt:dopage('result','$url?page=$nextpg');>后页</a> "; else $pagenav.=" 后页 ";
$pagenav.=" <a href=javascrīpt:dopage('result','$url?page=$pagenum');>尾页</a> ";
$pagenav.="</select> 页,共 $pagenum 页";
//假如传入的页数参数大于总页数,则显示错误信息
If($page>$pagenum){
 Echo "Error : Can Not Found The page ".$page;
 Exit;
}
$info=mysql_query("select * from cr_userinfo limit $offset,$num"); //获取相应页数所需要显示的数据
While($it=mysql_fetch_array($info)){
 Echo $it['username'];
 echo "<br>";
}                //显示数据
 echo"<br>";
 echo $pagenav;//输出分页导航
?>
</div>
</body>
</html>

翻页的关键就在于翻页时调用dopage()函数,接着利用回调信息来更新div中的内容,服务器端核心代码:

<?php
header("Content-type: text/html;charset=GBK");//输出编码,避免中文乱码
$page=isset($_GET['page'])?intval($_GET['page']):1;  //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。
$num=10;          //每页显示10条数据
$db=mysql_connect("localhost","root","7529639");   //创建数据库连接
mysql_select_db("cr_download");     //选择要操作的数据库
/*

首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,具体的公式就是

总数据库除以每页显示的条数,有余进一。

也就是说10/3=3.3333=4 有余数就要进一。

*/

$result=mysql_query("select * from cr_userinfo");
$total=mysql_num_rows($result); //查询所有的数据
$url='test.php';//获取本页URL
//页码计算
$pagenum=ceil($total/$num);         //获得总页数,也是最后一页
$page=min($pagenum,$page);//获得首页
$prepg=$page-1;//上一页
$nextpg=($page==$pagenum ? 0 : $page+1);//下一页
$offset=($page-1)*$num;          //获取limit的第一个参数的值,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。
//开始分页导航条代码:
$pagenav="显示第 <B>".($total?($offset+1):0)."</B>-<B>".min($offset+10,$total)."</B> 条记录,共 $total 条记录 ";
//如果只有一页则跳出函数:
if($pagenum<=1) return false;
$pagenav.=" <a href=javascrīpt:dopage('result','$url?page=1');>首页</a> ";
if($prepg) $pagenav.=" <a href=javascrīpt:dopage('result','$url?page=$prepg');>前页</a> "; else $pagenav.=" 前页 ";
if($nextpg) $pagenav.=" <a href=javascrīpt:dopage('result','$url?page=$nextpg');>后页</a> "; else $pagenav.=" 后页 ";
$pagenav.=" <a href=javascrīpt:dopage('result','$url?page=$pagenum');>尾页</a> ";
$pagenav.="</select> 页,共 $pagenum 页";
//假如传入的页数参数大于总页数,则显示错误信息
If($page>$pagenum){
 Echo "Error : Can Not Found The page ".$page;
 Exit;
}
$info=mysql_query("select * from cr_userinfo limit $offset,$num"); //获取相应页数所需要显示的数据
While($it=mysql_fetch_array($info)){
 Echo $it['username'];
 echo "<br>";
}       //显示数据
 echo"<br>";
 echo $pagenav;//输出分页导航
 ?>

以上为大家详细解释了PHP+AJAX无刷新分页实现方法,希望对大家学习php程序设计有所帮助。

PHP 相关文章推荐
用php来检测proxy
Oct 09 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 PHP
PHP时间格式控制符对照表分享
Jul 23 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
Jul 18 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
Apr 21 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
Apr 23 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
Dec 14 PHP
php观察者模式应用场景实例详解
Feb 03 PHP
PHP基于自定义类随机生成姓名的方法示例
Aug 05 PHP
asp函数split()对应php函数explode()
Feb 27 PHP
PHP中有关长整数的一些操作教程
Sep 11 PHP
基于PHP的微信公众号的开发流程详解
Aug 07 PHP
php获取远程文件的内容和大小
Nov 03 #PHP
php获取远程文件内容的函数
Nov 02 #PHP
php+ajax实现无刷新数据分页的办法
Nov 02 #PHP
PHP中Http协议post请求参数
Nov 02 #PHP
浅谈PHP中foreach/in_array的使用
Nov 02 #PHP
php防止用户重复提交表单
Nov 02 #PHP
windows8.1下Apache+Php+MySQL配置步骤
Oct 30 #PHP
You might like
增加反向链接的101个方法 站长推荐
2007/01/31 PHP
php 来访国内外IP判断代码并实现页面跳转
2009/12/18 PHP
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
ThinkPHP空模块和空操作详解
2014/06/30 PHP
Javascript模板技术
2007/04/27 Javascript
js的闭包的一个示例说明
2008/11/18 Javascript
jquery制作搜狐快站页面效果示例分享
2014/02/21 Javascript
浅析javascript中函数声明和函数表达式的区别
2015/02/15 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
Nodejs+Socket.io实现通讯实例代码
2017/02/13 NodeJs
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
2018/11/22 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
通过微信公众平台获取公众号文章的方法示例
2019/12/25 Javascript
[01:54]TI珍贵瞬间系列(三):翻盘
2020/08/28 DOTA
TensorFlow在MAC环境下的安装及环境搭建
2017/11/14 Python
详解django自定义中间件处理
2018/11/21 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
Python class的继承方法代码实例
2020/02/14 Python
Python如何用filter函数筛选数据
2020/03/05 Python
解决Jupyter NoteBook输出的图表太小看不清问题
2020/04/16 Python
django使用多个数据库的方法实例
2021/03/04 Python
canvas 绘图时位置偏离的问题解决
2020/09/16 HTML / CSS
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
欧洲领先的技术商店:eibmarkt.com
2019/05/10 全球购物
英文简历中的自我评价
2013/10/06 职场文书
高二美术教学反思
2014/01/14 职场文书
《鱼游到了纸上》教学反思
2014/02/20 职场文书
开展批评与自我批评发言材料
2014/05/15 职场文书
软件研发工程师岗位职责
2014/09/30 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python
详解如何使用Nginx解决跨域问题
2022/05/06 Servers