Ajax请求返回大量数据分批处理问题 [PHP相关]

作者:快乐的小飞侠 发布于:2016-12-06 浏览:932次 收藏

   当我们发送ajax请求,返回数据量很大,同时追加到页面中会卡爆,甚至会导致页面假死。纠结了一天,找到解决方案,分享给大家!思路很简单,借助分页原理,分批返回数据!直接写个伪代码。model层我就不写了

  PHP代码:

<?php
    ...
    function actionIndex(){
        //获取当前页
        $$loadingPage = \Yii::$app->request->get('nextPage',1);
        //每页多少条数据
        $pageSize = 100;
        //总共有多少条数据
        $counts = User::find()->count();
        //总共有多少条页数
        $totalPage = ceil($counts / $pageSize);
        $data = User::find()->offset(($loadingPage - 1) * $pageSize)->limit($pageSize)->asArray()->all();
        //下一页
        $nextPage  = $loadingPage < $totalPage ? $loadingPage + 1 : 0;
        echo json_encode([
            'data'     => $data,
            'nextPage' => $nextPage,
        ]);
    }
    ...
?>

  JS中ajax代码

function getNextPage(nextPage){
    $.ajax({
        type:'get',
        url:'/index',
        data:{nextPage:nextPage},
        dataType:'json',
        success:function(result){
            if(result.data != null){
                console.log(result.data);
            }
            
            if(result.nextPage && result.nextPage !=0){
                getNextPage(result.nextPage);
                console.log(result.data);
            }
        }
    })
}

  

如果文章对您有所帮助,希望继续支持我们,您的支持是我们最大的动力 ¥打赏
标签: ajax js
声明:文章内容由作者原创或整理,未经允许,不得转载!
  • 评论于 2016-12-13 09:18:06

    意思是做分页就好 对吧

    回复于 2016-12-13 09:40:31 回复
    这样也不行...一千条数据还没问题,再多页面也会卡死。没找到解决方案....
    回复
您需要登录后才可以评论。登录 | 立即注册