详解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代码DOS造成用光网络带宽
Mar 01 PHP
PHP中使用crypt()实现用户身份验证的代码
Sep 05 PHP
PHP实现今天是星期几的几种写法
Sep 26 PHP
PHP生成sitemap.xml地图函数
Nov 13 PHP
简单的php缓存类分享     php缓存机制
Jan 22 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
Sep 22 PHP
如何用PHP来实现一个动态Web服务器
Jul 29 PHP
PHP中each与list用法分析
Jan 08 PHP
PHP程序员的技术成长规划
Mar 25 PHP
阿里云的WindowsServer2016上部署php+apache
Jul 17 PHP
php常用的工具开发整理
Sep 26 PHP
详解PHP设计模式之依赖注入模式
May 25 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
JavaScript的面向对象(二)
2006/11/09 Javascript
Display SQL Server Login Mode
2007/06/21 Javascript
jQuery chili图片远处放大插件
2009/11/30 Javascript
js 获取服务器控件值的代码
2010/03/05 Javascript
jquery tab插件制作实现代码
2010/06/22 Javascript
SyntaxHighlighter语法高亮插件使用说明
2011/08/14 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
JS简单实现String转Date的方法
2016/03/02 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
bootstrap table单元格新增行并编辑
2017/05/19 Javascript
如何让你的JS代码更好看易读
2017/12/01 Javascript
JS实现登录页密码的显示和隐藏功能
2017/12/06 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
Angular 容器部署的方法
2018/04/17 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
解决谷歌搜索技术文章时打不开网页问题的python脚本
2013/02/10 Python
老生常谈Python进阶之装饰器
2017/05/11 Python
pycharm远程开发项目的实现步骤
2019/01/20 Python
python批量下载抖音视频
2019/06/17 Python
keras分类之二分类实例(Cat and dog)
2020/07/09 Python
tensorflow与numpy的版本兼容性问题的解决
2021/01/08 Python
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
销售人员自我评价怎么写
2013/09/19 职场文书
宣传活动总结范文
2014/07/01 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
政风行风整改报告
2014/11/06 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
领导干部失职检讨书
2015/05/05 职场文书
李强为自己工作观后感
2015/06/11 职场文书
查看nginx配置文件路径和资源文件路径的方法
2021/03/31 Servers
mysql5.7使用binlog 恢复数据的方法
2021/06/03 MySQL
vue递归实现树形组件
2022/07/15 Vue.js