详解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学习之输出字符串(echo,print,printf,print_r和var_dump)
Apr 17 PHP
PHPEXCEL 使用小记
Jan 06 PHP
PHP对MongoDB[NoSQL]数据库的操作
Mar 01 PHP
php读取excel文件的简单实例
Aug 26 PHP
PHP函数之日期时间函数date()使用详解
Sep 09 PHP
使用php判断服务器是否支持Gzip压缩功能
Sep 24 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
Jan 14 PHP
php实现过滤表单提交中html标签的方法
Oct 17 PHP
php插入排序法实现数组排序实例
Feb 16 PHP
php查询相似度最高的字符串的方法
Mar 12 PHP
PHP中的Session对象如何使用
Sep 25 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
Oct 08 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设计模式 Observer(观察者模式)
2011/06/26 PHP
解析thinkphp中的M()与D()方法的区别
2013/06/22 PHP
使用ThinkPHP生成缩略图及显示
2017/04/27 PHP
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
老生常谈javascript的类型转换
2016/10/12 Javascript
JS实现DIV高度自适应窗口示例
2017/02/16 Javascript
php输出全部gb2312编码内的汉字方法
2017/03/04 Javascript
webpack4简单入门实例
2018/09/06 Javascript
JS实现li标签的删除
2019/04/12 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
基于js实现的图片拖拽排序源码实例
2020/11/04 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
js动态添加带圆圈序号列表的实例代码
2021/02/18 Javascript
讲解Python中的标识运算符
2015/05/14 Python
Python读写配置文件的方法
2015/06/03 Python
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
html5生成柱状图(条形图)效果的实例代码
2016/03/25 HTML / CSS
字中字效果的实现【html5实例】
2016/05/03 HTML / CSS
加拿大领先的优质厨具产品在线购物网站:Golda’s Kitchen
2017/11/17 全球购物
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
高中生自我评价个人范文
2013/11/09 职场文书
小学生期末自我鉴定
2014/01/19 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
个人自荐书怎么写
2015/03/26 职场文书
浅谈Redis的几个过期策略
2021/05/27 Redis
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技