Heim >Backend-Entwicklung >PHP-Tutorial >So implementieren Sie aktualisierungsfreies Paging mit Ajax in Thinkphp

So implementieren Sie aktualisierungsfreies Paging mit Ajax in Thinkphp

不言
不言Original
2018-06-06 16:21:401671Durchsuche

Dieser Artikel stellt hauptsächlich die relevanten Informationen zur Verwendung von Ajax zur Erzielung von aktualisierungsfreiem Paging in Thinkphp vor. Er ist sehr gut und hat Referenzwert.

im LibORGUtil Verzeichnis des Thinkphp-Verzeichnisses. Erstellen Sie eine neue AjaxPage.class.php und schreiben Sie den folgenden Inhalt:

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2009 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// $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(&#39;header&#39;=>&#39;条记录&#39;,&#39;prev&#39;=>&#39;上一页&#39;,&#39;next&#39;=>&#39;下一页&#39;,&#39;first&#39;=>&#39;第一页&#39;,&#39;last&#39;=>&#39;最后一页&#39;,&#39;theme&#39;=>&#39; %totalRow% %header% %nowPage%/%totalPage% 页 %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%&#39;);
// 默认分页变量名
protected $varPage;
public function __construct($totalRows,$listRows=&#39;&#39;,$ajax_func,$parameter=&#39;&#39;) {
$this->totalRows = $totalRows;
$this->ajax_func = $ajax_func;
$this->parameter = $parameter;
$this->varPage = C(&#39;VAR_PAGE&#39;) ? C(&#39;VAR_PAGE&#39;) : &#39;p&#39; ;
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 &#39;&#39;;
$p = $this->varPage;
$nowCoolPage = ceil($this->nowPage/$this->rollPage);
$url = $_SERVER[&#39;REQUEST_URI&#39;].(strpos($_SERVER[&#39;REQUEST_URI&#39;],&#39;?&#39;)?&#39;&#39;:"?").$this->parameter;
$parse = parse_url($url);
if(isset($parse[&#39;query&#39;])) {
parse_str($parse[&#39;query&#39;],$params);
unset($params[$p]);
$url = $parse[&#39;path&#39;].&#39;?&#39;.http_build_query($params);
}
//上下翻页字符串
$upRow = $this->nowPage-1;
$downRow = $this->nowPage+1;
if ($upRow>0){
$upPage="<a id=&#39;big&#39; href=&#39;javascript:".$this->ajax_func."(".$upRow.")&#39;>".$this->config[&#39;prev&#39;]."</a>";
}else{
$upPage="";
}
if ($downRow <= $this->totalPages){
$downPage="<a id=&#39;big&#39; href=&#39;javascript:".$this->ajax_func."(".$downRow.")&#39;>".$this->config[&#39;next&#39;]."</a>";
}else{
$downPage="";
}
// << < > >>
if($nowCoolPage == 1){
$theFirst = "";
$prePage = "";
}else{
$preRow = $this->nowPage-$this->rollPage;
$prePage = "<a id=&#39;big&#39; href=&#39;javascript:".$this->ajax_func."(".$preRow.")&#39;>上".$this->rollPage."页</a>";
$theFirst = "<a id=&#39;big&#39; href=&#39;javascript:".$this->ajax_func."(1)&#39; >".$this->config[&#39;first&#39;]."</a>";
}
if($nowCoolPage == $this->coolPages){
$nextPage = "";
$theEnd="";
}else{
$nextRow = $this->nowPage+$this->rollPage;
$theEndRow = $this->totalPages;
$nextPage = "<a id=&#39;big&#39; href=&#39;javascript:".$this->ajax_func."(".$nextRow.")&#39; >下".$this->rollPage."页</a>";
$theEnd = "<a id=&#39;big&#39; href=&#39;javascript:".$this->ajax_func."(".$theEndRow.")&#39; >".$this->config[&#39;last&#39;]."</a>";
}
// 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 .= " <a id=&#39;big&#39; href=&#39;javascript:".$this->ajax_func."(".$page.")&#39;> ".$page." </a>";
}else{
break;
}
}else{
if($this->totalPages != 1){
$linkPage .= " <span class=&#39;current&#39;>".$page."</span>";
}
}
}
$pageStr = str_replace(
array(&#39;%header%&#39;,&#39;%nowPage%&#39;,&#39;%totalRow%&#39;,&#39;%totalPage%&#39;,&#39;%upPage%&#39;,&#39;%downPage%&#39;,&#39;%first%&#39;,&#39;%prePage%&#39;,&#39;%linkPage%&#39;,&#39;%nextPage%&#39;,&#39;%end%&#39;),
array($this->config[&#39;header&#39;],$this->nowPage,$this->totalRows,$this->totalPages,$upPage,$downPage,$theFirst,$prePage,$linkPage,$nextPage,$theEnd),$this->config[&#39;theme&#39;]);
return $pageStr;
}
}
?>

Schreiben Sie den folgenden Inhalt in den Controller:

<?php
class UserAction extends Action{
public function user(){
import("ORG.Util.AjaxPage");// 导入分页类 注意导入的是自己写的AjaxPage类
$credit = M(&#39;user&#39;);
$count = $credit->count(); //计算记录数
$limitRows = 5; // 设置每页记录数
$p = new AjaxPage($count, $limitRows,"user"); //第三个参数是你需要调用换页的ajax函数名
$limit_value = $p->firstRow . "," . $p->listRows;
$data = $credit->order(&#39;id desc&#39;)->limit($limit_value)->select(); // 查询数据
$page = $p->show(); // 产生分页信息,AJAX的连接在此处生成
$this->assign(&#39;list&#39;,$data);
$this->assign(&#39;page&#39;,$page);
$this->display();
}
}
?>

Die Vorlagendatei lautet wie folgt:

<html>
<head>
<title>Ajax无刷新分页</title>
<script type="text/javascript" src="../Public/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
function user(id){ //user函数名 一定要和action中的第三个参数一致上面有
var id = id;
$.get(&#39;User/user&#39;, {&#39;p&#39;:id}, function(data){ //用get方法发送信息到UserAction中的user方法
$("#user").replaceWith("<p id=&#39;user&#39;>"+data+"</p>"); //user一定要和tpl中的一致
});
}
</script>
</head>
<body>
<p id=&#39;user&#39;> <!--这里的user和下面js中的test要一致-->
<volist id=&#39;list&#39; name=&#39;list&#39;> <!--内容输出-->
<{$list.id}>  <{$list.username}><br/>
</volist>
<{$page}> <!--分页输出-->
</p>
</body>
</html>

Verwandte Empfehlungen :

Verwenden Sie ThinkPHPs integriertes ThinkAjax, um asynchrone Übertragungstechnologie zu implementieren

So verwenden Sie Ajax, um JSON-Daten in ThinkPHP zu empfangen

Das obige ist der detaillierte Inhalt vonSo implementieren Sie aktualisierungsfreies Paging mit Ajax in Thinkphp. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn