Heim  >  Artikel  >  PHP-Framework  >  Detaillierte Erläuterung des Ajax-Non-Refresh-Pagings einiger Inhalte unter thinkphp

Detaillierte Erläuterung des Ajax-Non-Refresh-Pagings einiger Inhalte unter thinkphp

藏色散人
藏色散人nach vorne
2022-01-31 05:00:302247Durchsuche

Die folgende thinkphp-Frameworktutorial-Kolumne stellt Ihnen das Ajax-Non-Refresh-Paging eines Teils des Seiteninhalts unter thinkphp vor. Ich hoffe, es wird Freunden in Not hilfreich sein!

Die Paging-Klasse, die mit dem thinkphp-Framework geliefert wird, erfordert bei jedem Umblättern eine Aktualisierung der gesamten Seite. Diese Art von Seitenwechsel-Benutzererfahrung ist offensichtlich nicht der Fall Im Idealfall hoffen wir, dass wir jedes Mal, wenn wir die Seite umblättern, nur die Daten in dem Teil des Datensatzes aktualisieren, den wir möchten. Auf diese Weise können wir uns leicht eine asynchrone Ajax-Kommunikation vorstellen, bei der Ajax für die asynchrone Interaktion mit der Datenbank verwendet wird. Ich verwende während des Entwicklungsprozesses eine MySQL-Datenbank, und die Daten werden aus der Datenbank abgerufen. Die abgefragten Daten werden zurückgegeben und die Originaldaten werden durch JQuery ersetzt, sodass eine teilweise Aktualisierung durchgeführt werden kann, ohne die Seite zu aktualisieren, wodurch Folgendes erreicht wird gewünschten Effekt.
thinkphp Ajax-Paging-Klasse
Diese Paging-Klasse ist eine online verfügbare Ressource. Sie können eine solche Klasse direkt in Ihrem eigenen thinkphp erstellen. Bei Bedarf können Sie den Namespace ändern

Spezifische Schritte1. Jetzt in der Indexmethode anzeigen und dann in der Seitenmethode abrufen und ajax zurückgeben. Beachten Sie hier, dass der Abruf die Referenzseite (Artikel) ist. Vorlage
Spaltenvorlagenindex. html

Unter diesen ist die referenzierte Vorlage der Teil des Inhalts, der paginiert werden muss.

1f87a0dc59f026a747ee557226eb4900'条记录','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="4c6ddcfa986b1cfd4b100c516dd444ceajax_func."(".$upRow.")'>".$this->config['prev']."5db79b134e9f6b82c0b36e0489ee08ed";
    }else{
        $upPage="";
    }

    if ($downRow 8aa9cd03f13872f1c27a1dd7dc85aa49totalPages){
        $downPage="4c6ddcfa986b1cfd4b100c516dd444ceajax_func."(".$downRow.")'>".$this->config['next']."5db79b134e9f6b82c0b36e0489ee08ed";
    }else{
        $downPage="";
    }
    // 5e91ac722550d2d65fc65c3024cfc1f6 >>
    if($nowCoolPage == 1){
        $theFirst = "";
        $prePage = "";
    }else{
        $preRow =  $this->nowPage-$this->rollPage;
        $prePage = "4c6ddcfa986b1cfd4b100c516dd444ceajax_func."(".$preRow.")'>上".$this->rollPage."页5db79b134e9f6b82c0b36e0489ee08ed";
        $theFirst = "4c6ddcfa986b1cfd4b100c516dd444ceajax_func."(1)' >".$this->config['first']."5db79b134e9f6b82c0b36e0489ee08ed";
    }
    if($nowCoolPage == $this->coolPages){
        $nextPage = "";
        $theEnd="";
    }else{
        $nextRow = $this->nowPage+$this->rollPage;
        $theEndRow = $this->totalPages;
        $nextPage = "4c6ddcfa986b1cfd4b100c516dd444ceajax_func."(".$nextRow.")' >下".$this->rollPage."页5db79b134e9f6b82c0b36e0489ee08ed";
        $theEnd = "4c6ddcfa986b1cfd4b100c516dd444ceajax_func."(".$theEndRow.")' >".$this->config['last']."5db79b134e9f6b82c0b36e0489ee08ed";
    }
    // 1 2 3 4 5
    $linkPage = "";
    for($i=1;$i930cdc47afbfa294d5d6bff505cbe3ddrollPage;$i++){
        $page=($nowCoolPage-1)*$this->rollPage+$i;
        if($page!=$this->nowPage){
            if($page930cdc47afbfa294d5d6bff505cbe3ddtotalPages){
               $linkPage .= " 4c6ddcfa986b1cfd4b100c516dd444ceajax_func."(".$page.")'> ".$page." 5db79b134e9f6b82c0b36e0489ee08ed";
            }else{
                break;
            }
        }else{
            if($this->totalPages != 1){
                $linkPage .= " c9c3467744b1ee299b813ab65906400d".$page."54bdf357c58b8a65c66d7c19c8e4d114";
            }
        }
    }
    $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;
}

}

Die Vorlage, die paginiert werden muss. Der Inhalt oberhalb des paginierten Inhalts wird nicht erneut geladen. Die Webseite wird erneut durcheinander gebracht Mit der Datenbank werden die erhaltenen Daten in die Vorlage geschrieben und ersetzen den vorherigen Datensatz. server.js, kann intern oder extern geschrieben werden, Sie können frei wählen
cd43c1cac171b9d5901cb44c2adcb334count();
        //实例化分页类,传入三个参数,分别是数据总数、每页显示的数据条数、要调用的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);
    }
}

Dieser Methodennamenserver ist der dritte Parameter, der in der instanziierten Paging-Klasse im Controller übergeben wird. Er wird jedes Mal ausgelöst, wenn Sie auf die Vorlage klicken, um den zu aktivieren Seite. Diese js-Methode server(p) übergibt die Seitennummer welcher Seite.

76c82f278ac045591c9159d381de2c57
100db36a723c770d327fc0aef2ce13b1
93f0f5c25f18dab9d176bd4f6de5d30e
9c3bca370b5104690d9ef395f2c5f8d1
e388a4556c0f65e1904146cc1a846bee
    hello world
94b3e26ee717c64999d7867364b1b4a3
4826afc8bc0934c5141d6810ee82aa53
3f1c4e4b6b16bbbd69b2ee476dc4f83a
    function server(pid){  
        var pid = pid;
        $.get("{:U('Index/page')}", "p="+pid, function(data){  
             $("#server").replaceWith("7db81b6f8cec3ce3f482d60b8ae1b72c"
             +data.content+
             "94b3e26ee717c64999d7867364b1b4a3"); 
        });
    }
2cacc6d41bbb37262a98f745aa00fbf0 
6432ecebf4dfccad7c9cdaa663a4dfcc2cacc6d41bbb37262a98f745aa00fbf0
73a6ac4ed44ffec12cee46588e518a5e

Hier wird die .get-Form der Ajax-Methode in jQuery verwendet, um zwischen Ajax und dem Hintergrund zu kommunizieren. Um die zurückgegebenen Daten zu erhalten, verwenden Sie die Methode „replaceWith“ und verwenden Sie

   <div id="server">
        <div class="row-fluid"  >
            <div class="span12">
                <div class="portlet box green">
                    <div class="portlet-title">
                        <div class="caption"><i class="icon-globe"></i>信息列表</div>
                    </div>

                    <div class="portlet-body" >
                
                        <table class="table table-striped table-bordered table-hover table-full-width" id="sample_1">

                            <thead>

                                <tr>
                                    <th class="hidden-480">a</th>
                                    <th class="hidden-480">b</th>
                                    <th class="hidden-480">c</th>
                                    <th class="hidden-480">d</th>
                                </tr>

                            </thead>

                            <tbody>
                                    //循环赋值
                                    <foreach name=&#39;list&#39; item=&#39;info&#39;>
                                        <tr>
                                            <td>{$info.a}</td>
                                            <td>{$info.b}</td>     
                                            <td>{$info.c}</td>
                                            <td>{$info.d}</td>
                                         
                                        </tr>
                                    </foreach>
                                
                            </tbody>
                            
                        </table>
                        //分页信息
                        <div class="row-fluid"> {$page} </div>
                        
                    </div>
                </div>    
            </div>        
        </div>
</div>

, um das p durch die ID von zu ersetzen Server in der Vorlage, um den Paging-Effekt zu erzielen.

Empfohlenes Lernen: „

Thinkphp-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Ajax-Non-Refresh-Pagings einiger Inhalte unter thinkphp. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen