详解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 相关文章推荐
array_multisort实现PHP多维数组排序示例讲解
Jan 04 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
May 05 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
Sep 28 PHP
php函数连续调用实例分析
Jul 30 PHP
PHP类的声明与实例化及构造方法与析构方法详解
Jan 26 PHP
PHP 中提示undefined index如何解决(多种方法)
Mar 16 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
Dec 08 PHP
php加密之discuz内容经典加密方式实例详解
Feb 04 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
Apr 27 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
Apr 02 PHP
在Laravel5中正确设置文件权限的方法
May 22 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
PHP新手上路(九)
2006/10/09 PHP
php基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
php为什么选mysql作为数据库? Mysql 创建用户方法
2007/07/02 PHP
CI框架中redis缓存相关操作文件示例代码
2016/05/17 PHP
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
详解javascript实现自定义事件
2016/01/19 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
js前端面试题及答案整理(一)
2016/08/26 Javascript
基于jQuery实现的幻灯图片切换
2016/12/02 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
2016/12/26 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
图文介绍Vue父组件向子组件传值
2018/02/17 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
JavaScript图片旋转效果实现方法详解
2020/06/28 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
整理Python中的赋值运算符
2015/05/13 Python
便捷提取python导入包的属性方法
2018/10/15 Python
10招!看骨灰级Pythoner玩转Python的方法
2019/04/15 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
Python Django 简单分页的实现代码解析
2019/08/21 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
Python hashlib和hmac模块使用方法解析
2020/12/08 Python
详解Python模块化编程与装饰器
2021/01/16 Python
HTML5样式控制示例代码
2013/11/27 HTML / CSS
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
自荐信格式简述
2014/01/25 职场文书
2014年党的群众路线活动个人整改措施
2014/10/28 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书
Mysql官方性能测试工具mysqlslap的使用简介
2021/05/21 MySQL