javascript - TP框架里如何做AJAX分页无刷新?
伊谢尔伦
伊谢尔伦 2017-04-10 17:30:46
[JavaScript讨论组]

分页已经做出来了,但是点击下一页就刷新一次。在网上搜索了一下AJAX的使用方法,但是很多都看不懂,可能是之前学的不够扎实吧,现在请教各位大神,数据是可以拿到了,点击按钮的路径还是没改变



伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(6)
天蓬老师
var g='';
var url='';
var param=['p':g];
 $.get(url, param, function() { 
        
 }) ;  
怪我咯

1、返回总记录数
2、返回第一页的数据渲染
3、根据总记录数和分页条数,计算分页并渲染
4、点击页码,发起ajax请求,返回新一页的数据,然后渲染

伊谢尔伦

你只需要把要替换的部分 用 ajax返回过来的值给替换级就好了。

迷茫

用ajax请求

PHPz

我用的是dropload这个插件,每次加载只需要将页码传过去,后端用fetch把内容拼好返回,如果没有数据可以直接锁定不再请求,挺好用

ringa_lee

直接在tp分页类里自定义一个AJAX分页的

/** 分页显示ajax输出
     * @access public
     */
    public function ajaxShow() {
        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);
        $idtagert = ($parse['fragment'])?"#".$parse['fragment']:"";
        if(isset($parse['query']) || isset($parse['fragment'])) {
            parse_str($parse['query'],$params);
            unset($params[$p]);
            $querycount = count($params);
            $url   =  $parse['path'].'?'.http_build_query($params);
        }else{
            $querycount = 0;
        }
        $pspan = ($querycount==0)?"":"&";
        //上下翻页字符串
        $upRow          =   $this->nowPage-1;
        $downRow        =   $this->nowPage+1;
        if ($upRow>0){
            $upPage     =   "<a class='btn pl-7 pr-7 pt-2 pb-2' href='javascript:void(0);' data-page=".$upRow.">".$this->config['prev']."</a>";
        }else{
            $upPage     =   "<a class='btn pl-7 pr-7 pt-2 pb-2' href='javascript:void(0);' data-page=".$upRow.">".$this->config['prev']."</a>";
        }

        if ($downRow <= $this->totalPages){
            $downPage   =   "<a class='btn pl-7 pr-7 pt-2 pb-2' href='javascript:void(0);' data-page=".$downRow.">".$this->config['next']."</a>";
        }else{
            $downPage   =   "<a class='btn pl-7 pr-7 pt-2 pb-2' href='javascript:void(0);'>".$this->config['next']."</a>";
        }
        // << < > >>
        if($nowCoolPage == 1){
            $preRow     =   $this->nowPage-$this->rollPage;
           // $prePage    =   "<a href='".str_replace('__PAGE__',$preRow,$url)."' >上5页</a>"; //上5页改成了 <<
            $theFirst   =   "<a class='btn pl-7 pr-7 pt-2 pb-2' href='javascript:void(0);' data-page=1 >".$this->config['first']."</a>";
        }else{
            $preRow     =   $this->nowPage-$this->rollPage;
           // $prePage    =   "<a href='".str_replace('__PAGE__',$preRow,$url)."' >上5页</a>"; //上5页改成了 <<
            $theFirst   =   "<a class='btn pl-7 pr-7 pt-2 pb-2' href='javascript:void(0);' data-page=1 >".$this->config['first']."</a>";
        }
        if($nowCoolPage == $this->coolPages){
            $nextPage   =   '';
            $theEnd     =   "<a class='btn pl-7 pr-7 pt-2 pb-2' href='javascript:void(0);' data-page=".$theEndRow." >".$this->config['last']."</a>";
        }else{
            $nextRow    =   $this->nowPage+$this->rollPage;
            $theEndRow  =   $this->totalPages;
           // $nextPage   =   "<a href='".str_replace('__PAGE__',$nextRow,$url)."' >下5页</a>";    // 下5页 改成了 >>
            $theEnd     =   "<a class='btn pl-7 pr-7 pt-2 pb-2' href='javascript:void(0);' data-page=".$theEndRow." >".$this->config['last']."</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 class='btn pl-7 pr-7 pt-2 pb-2' href='javascript:void(0);' data-page=" .$page.">".$page."</a>"; //去掉了此处的空格
                }else{
                    break;
                }
            }else{
                if($this->totalPages != 1){
                    // 当前页
                    $linkPage .= "<a class='btn pl-7 pr-7 pt-2 pb-2 font-green-meadow font-white font-lg bold'  data-page=" .$page." href='javascript:void(0);'>".$page."</a>";
                }
            }
        }
        $pageStr     =   str_replace(
            array('%header%','%nowPage%','%listRows%','%totalRow%','%totalPage%','%upPage%','%downPage%','%first%','%prePage%','%linkPage%','%nextPage%','%end%'),
            array($this->config['header'],$this->nowPage,$this->listRows,$this->totalRows,$this->totalPages,$upPage,$downPage,$theFirst,$prePage,$linkPage,$nextPage,$theEnd),$this->config['theme']);
        return $pageStr;
    }

调用的时候

//分页处理 
    $count = M('*')->where($where)->count();
    $Page  = new CustomPage($count,$filter['page_size']);
    $p = $Page->ajaxShow();//$p = $Page->show();
    $Lsql = "{$Page->firstRow},{$Page->listRows}";
模板用js处理
    //翻页事件
        $("#ajax_lists").delegate(".sfc-page a", "click", function() {
            var page = $(this).data("page");
            goods_list.search.defaultData.p = page;
            ajax_data("__CONTROLLER__/****",'');
        });
//请求商品列表
    function ajax_data(url,params) {
           SFC_Ajax.request({type:"get",method:url,callback:function(data){
               // console.log(data);
               $('#ajax_lists').html(data);
           }},params);
    };
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号