详解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:风雨欲来 路在何方?
Oct 09 PHP
php为什么选mysql作为数据库? Mysql 创建用户方法
Jul 02 PHP
php5.3以后的版本连接sqlserver2000的方法
Jul 28 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
Nov 07 PHP
PHP从FLV文件获取视频预览图的方法
Mar 12 PHP
smarty模板引擎之内建函数用法
Mar 30 PHP
php上传图片客户端和服务器端实现方法
Mar 30 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
Jun 28 PHP
Zend Framework动作助手FlashMessenger用法详解
Mar 05 PHP
yii通过小物件生成view的方法
Oct 08 PHP
PHP下载远程图片的几种方法总结
Apr 07 PHP
Laravel 创建指定表 migrate的例子
Oct 09 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 strlen mb_strlen计算中英文混排字符串长度
2009/07/10 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
PHP PDOStatement::fetch讲解
2019/01/31 PHP
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
javascript 学习之旅 (3)
2009/02/05 Javascript
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
2010/04/01 Javascript
JavaScript中实现块作用域的方法
2010/04/01 Javascript
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
2012/08/14 Javascript
jQuery ajax serialize()方法的使用以及常见问题解决
2013/01/27 Javascript
JavaScript的作用域和块级作用域概念理解
2014/09/21 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
12 款 JS 代码测试必备工具(翻译)
2016/12/13 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
微信小程序实现工作时间段选择
2019/02/15 Javascript
vue中created和mounted的区别浅析
2019/08/13 Javascript
element中el-container容器与div布局区分详解
2020/05/13 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
Django数据库操作之save与update的使用
2020/04/01 Python
Python headers请求头如何实现快速添加
2020/11/03 Python
python opencv实现图像配准与比较
2021/02/09 Python
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
交通事故赔偿协议书
2014/04/15 职场文书
应届大专生求职信
2014/06/26 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
Python OpenCV快速入门教程
2021/04/17 Python
Python 绘制多因子柱状图
2022/05/11 Python
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers