Maison>Article>développement back-end> Comment implémenter une pagination sans actualisation à l'aide d'ajax dans Thinkphp

Comment implémenter une pagination sans actualisation à l'aide d'ajax dans Thinkphp

不言
不言 original
2018-06-06 16:21:40 1584parcourir

Cet article présente principalement les informations pertinentes sur la méthode d'utilisation d'ajax pour obtenir une pagination sans actualisation dans Thinkphp. Il est très bon et a une valeur de référence. Les amis dans le besoin peuvent s'y référer

dans LibORGUtil. répertoire du répertoire Thinkphp. Créez un nouveau AjaxPage.class.php et écrivez le contenu suivant :

 // +---------------------------------------------------------------------- // $Id: Page.class.php 2712 2012-02-06 10:12:49Z liu21st $ class AjaxPage { // 分页栏每页显示的页数 public $rollPage = 5; // 页数跳转时要带的参数 public $parameter ; // 默认列表每页显示行数 public $listRows = 20; // 起始行数 public $firstRow ; // 分页总页面数 protected $totalPages ; // 总行数 protected $totalRows ; // 当前页数 protected $nowPage ; // 分页的栏的总页数 protected $coolPages ; // 分页显示定制 protected $config = array('header'=>'条记录','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 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="ajax_func."(".$upRow.")'>".$this->config['prev'].""; }else{ $upPage=""; } if ($downRow <= $this->totalPages){ $downPage="ajax_func."(".$downRow.")'>".$this->config['next'].""; }else{ $downPage=""; } // << < > >> if($nowCoolPage == 1){ $theFirst = ""; $prePage = ""; }else{ $preRow = $this->nowPage-$this->rollPage; $prePage = "ajax_func."(".$preRow.")'>上".$this->rollPage."页"; $theFirst = "ajax_func."(1)' >".$this->config['first'].""; } if($nowCoolPage == $this->coolPages){ $nextPage = ""; $theEnd=""; }else{ $nextRow = $this->nowPage+$this->rollPage; $theEndRow = $this->totalPages; $nextPage = "ajax_func."(".$nextRow.")' >下".$this->rollPage."页"; $theEnd = "ajax_func."(".$theEndRow.")' >".$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 .= " ajax_func."(".$page.")'> ".$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; } } ?>

Écrivez le contenu suivant dans le contrôleur :

count(); //计算记录数 $limitRows = 5; // 设置每页记录数 $p = new AjaxPage($count, $limitRows,"user"); //第三个参数是你需要调用换页的ajax函数名 $limit_value = $p->firstRow . "," . $p->listRows; $data = $credit->order('id desc')->limit($limit_value)->select(); // 查询数据 $page = $p->show(); // 产生分页信息,AJAX的连接在此处生成 $this->assign('list',$data); $this->assign('page',$page); $this->display(); } } ?>

Le fichier modèle est le suivant :

  Ajax无刷新分页   
  

<{$list.id}> <{$list.username}>
<{$page}>

Recommandations associées :

Comment implémenter la technologie de transmission asynchrone à l'aide de ThinkAjax intégré à ThinkPHP

Comment utiliser ajax pour recevoir des données json dans ThinkPHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn