千家信息网

thinkphp下部分内容的ajax无刷新分页怎么办

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了thinkphp下部分内容的ajax无刷新分页怎么办的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇thinkphp下部分内容的ajax无刷新分页怎么办文
千家信息网最后更新 2026年11月02日thinkphp下部分内容的ajax无刷新分页怎么办

这篇文章主要介绍了thinkphp下部分内容的ajax无刷新分页怎么办的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇thinkphp下部分内容的ajax无刷新分页怎么办文章都会有所收获,下面我们一起来看看吧。

thinkphp框架自带的分页类是每次翻页都要刷新一下整个页面,这种翻页的用户体验显然是不太理想的,我们希望每次翻页只刷新我们想要的数据集部分的数据,这样我们很容易想到ajax异步通信,用ajax与数据库(本人在开发过程中使用的是mysql数据库)异步交互,将从数据库查询的数据返回,用jquery替换原有的数据,从而在不刷新这个页面的情况下进行局部刷新,从而达到我们预期的效果。
thinkphp ajax 分页类
这个分页类是网上找到的资源,大家可以直接在自己的thinkphp里创建这么一个类,我这里类名是 AjaxPage.class.php,如有需要,可修改命名空间

'条记录','prev'=>'上一页','next'=>'下一页','first'=>'第一页','last'=>'最后一页','theme'=>' %totalRow% %header% %nowPage%/%totalPage% 页 %upPage% %downPage% %first%  %prePage%  %linkPage%  %nextPage% %end%');// 默认分页变量名protected $varPage;public function __construct($totalRows,$listRows='',$ajax_func,$parameter='') {    $this->totalRows = $totalRows;    $this->ajax_func = $ajax_func;    $this->parameter = $parameter;    $this->varPage = C('VAR_PAGE') ? C('VAR_PAGE') : 'p' ;    if(!empty($listRows)) {        $this->listRows = intval($listRows);    }    $this->totalPages = ceil($this->totalRows/$this->listRows);     //总页数    $this->coolPages  = ceil($this->totalPages/$this->rollPage);    $this->nowPage  = !empty($_GET[$this->varPage])?intval($_GET[$this->varPage]):1;    if(!empty($this->totalPages) && $this->nowPage>$this->totalPages) {        $this->nowPage = $this->totalPages;    }    $this->firstRow = $this->listRows*($this->nowPage-1);} public function nowpage($totalRows,$listRows='',$ajax_func,$parameter='') {    $this->totalRows = $totalRows;    $this->ajax_func = $ajax_func;    $this->parameter = $parameter;    $this->varPage = C('VAR_PAGE') ? C('VAR_PAGE') : 'p' ;    if(!empty($listRows)) {        $this->listRows = intval($listRows);    }    $this->totalPages = ceil($this->totalRows/$this->listRows);     //总页数    $this->coolPages  = ceil($this->totalPages/$this->rollPage);    $this->nowPage  = !empty($_GET[$this->varPage])?intval($_GET[$this->varPage]):1;    if(!empty($this->totalPages) && $this->nowPage>$this->totalPages) {        $this->nowPage = $this->totalPages;    }    $this->firstRow = $this->listRows*($this->nowPage-1);    return $this->nowPage;}public function setConfig($name,$value) {    if(isset($this->config[$name])) {        $this->config[$name]    =   $value;    }}public function show() {    if(0 == $this->totalRows) return '';    $p = $this->varPage;    $nowCoolPage      = ceil($this->nowPage/$this->rollPage);    $url  =  $_SERVER['REQUEST_URI'].(strpos($_SERVER['REQUEST_URI'],'?')?'':"?").$this->parameter;    $parse = parse_url($url);    if(isset($parse['query'])) {        parse_str($parse['query'],$params);        unset($params[$p]);        $url   =  $parse['path'].'?'.http_build_query($params);    }    //上下翻页字符串    $upRow   = $this->nowPage-1;    $downRow = $this->nowPage+1;    if ($upRow>0){        $upPage="".$this->config['prev']."";    }else{        $upPage="";    }    if ($downRow <= $this->totalPages){        $downPage="".$this->config['next']."";    }else{        $downPage="";    }    // << < > >>    if($nowCoolPage == 1){        $theFirst = "";        $prePage = "";    }else{        $preRow =  $this->nowPage-$this->rollPage;        $prePage = "上".$this->rollPage."页";        $theFirst = "".$this->config['first']."";    }    if($nowCoolPage == $this->coolPages){        $nextPage = "";        $theEnd="";    }else{        $nextRow = $this->nowPage+$this->rollPage;        $theEndRow = $this->totalPages;        $nextPage = "下".$this->rollPage."页";        $theEnd = "".$this->config['last']."";    }    // 1 2 3 4 5    $linkPage = "";    for($i=1;$i<=$this->rollPage;$i++){        $page=($nowCoolPage-1)*$this->rollPage+$i;        if($page!=$this->nowPage){            if($page<=$this->totalPages){               $linkPage .= "  ".$page." ";            }else{                break;            }        }else{            if($this->totalPages != 1){                $linkPage .= " ".$page."";            }        }    }    $pageStr  =  str_replace(        array('%header%','%nowPage%','%totalRow%','%totalPage%','%upPage%','%downPage%','%first%','%prePage%','%linkPage%','%nextPage%','%end%'),        array($this->config['header'],$this->nowPage,$this->totalRows,$this->totalPages,$upPage,$downPage,$theFirst,$prePage,$linkPage,$nextPage,$theEnd),$this->config['theme']);    return $pageStr;}}

具体步骤
1.控制器
现在index方法里display,再在page方法里fetch,ajaxReturn,这里要注意fetch的是引用页(article)

count();        //实例化分页类,传入三个参数,分别是数据总数、每页显示的数据条数、要调用的jQuery ajax方法名        $p=new \Think\AjaxPage($count,4,'server');        //产生分页信息        $page=$p->show();        //要查询的数据,limit表示每页查询的数量,这里为4条        $data = $info->limit($p->firstRow.','.$p->listRows)->select();        //assign方法往模板赋值        $this->assign('list',$data);        $this->assign('page',$page);//        $res["content"] = $this->fetch('Index/index');//        $this->ajaxReturn($res);        $this->display();    }    public function page(){        //实例化数据模型        $info=M('info');        //统计要查询数据的数量        $count=$info->count();        //实例化分页类,传入三个参数,分别是数据总数、每页显示的数据条数、要调用的jQuery ajax方法名        $p=new \Think\AjaxPage($count,4,'server');        //产生分页信息        $page=$p->show();        //要查询的数据,limit表示每页查询的数量,这里为4条        $data = $info->limit($p->firstRow.','.$p->listRows)->select();        //assign方法往模板赋值        $this->assign('list',$data);        $this->assign('page',$page);        //ajax返回信息        $res["content"] = $this->fetch('Index/article');        $this->ajaxReturn($res);    }}

2.模板
柱模板 index.html

其中,引用的模板为需要分页的这部分内容

hello world

需要分页的模板

article.html

   
信息列表
//循环赋值
a b c d
{$info.a} {$info.b} {$info.c} {$info.d}
//分页信息
{$page}

这样就可以保证,点击页码的时候,不会导致分页内容上边的内容会再次加载一遍,造成网页乱

3.js部分
这一步是实现ajax无刷新分页的重点,用到了jQuery的ajax通信,通过与数据库的ajax交互,将获取到的数据写到模板中,替换掉之前的数据集,达到分页的目的。server.js ,可写在内部也可写在外部,自由选择

 

这个方法名 server 就是控制器中实例化分页类中传的第三个参数,每次在模板上点击翻页,都会触发这个js方法server(p),里面传递的是第几页的页码。

$p=new \Think\AjaxPage($count,4,'server');

这里用到的是jQuery里ajax方法的.get形式进行ajax与后台通信,拿到返回的数据用replaceWith方法,用

+数据

替换模板中id为server的p,实现分页效果。

关于"thinkphp下部分内容的ajax无刷新分页怎么办"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"thinkphp下部分内容的ajax无刷新分页怎么办"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

数据 内容 方法 模板 查询 部分 信息 怎么办 实例 数据库 三个 参数 数量 知识 页面 通信 总数 控制器 效果 篇文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华服互联网科技怎么样 互联网科技公司的优势 互联网科技垄断 奔汉互联网科技 友谊互联网络科技 赫美联合互联网科技 互联网科技生活的内容 互联网公司会议桌创意科技软装饰 互联网 科技馆 开启互联网科技时代小说 青岛科技大学互联网大赛研究生 互联网与医疗科技 呼和浩特新华互联网科技学院 银川新华互联网科技学校联系电话 燊美集互联网科技有限公司 烟台灵鸽互联网科技有限公司 互联网风格科技公司名称 福建互联网展示科技馆设计 世界互联网科技成果奖 艺电能源互联网科技有限公司招聘 猫创互联网科技 苏州大垚互联网科技 宁波青枫互联网科技有限公司 昭通云南众福互联网科技有限公司 茂名市互联网科技产业园 互联网媒体平台算高科技产业 众安科技工业互联网合作 本届互联网大会上的黑科技 全球科技与互联网公司市值变化 银川新华互联网科技学校招聘
0