dongyuan9109 2012-01-18 22:25
浏览 37
已采纳

使用json加载更多功能

I am trying to implement a load more feature in a web app I am building. When the app loads, it makes an ajax call to controller which retrieves the data from the database and then encodes them in JSON. I am making use of limits and offsets in mysql query and I more data to be loaded as the user scrolls down. This is the method in the controller which the ajax call is made to

function latest_pheeds($offset = 0) {
            //Confirm if a user is logged before allowing access
            if($this->isLogged()) 
            {
                //Limit
                $limit = 20;
                //user id
                $user_id = $this->session->userdata('user_id'); 
                //load pheeds
                $dt = $this->pheed_model->get_latest_pheeds($limit,$offset);    
                $data = $dt['pheeds']; //data
                $total = $dt['total']; //Total no of rows of data
                $return['pheeds'] = $data;
                echo json_encode($return); //encode in json

            } else {
                $this->output->set_status_header('401',"Attempting Unauthorized Access");
            }
        }

How do I break this data into pages, so I can simply pass the page no as argument to method via the ajax call to implement the load more with jQuery?

  • 写回答

1条回答 默认 最新

  • dtmm0148603 2012-01-18 22:36
    关注

    Calculate $offset by multiplying (page number - 1) with $limit:

    $offset = ($page - 1) * $limit;
    

    So if $page is 1, then it will be (1 - 1) * 20 = 0 * 20 = 0,

    if $page is 2, then it will be (2 - 1) * 20 = 1 * 20 = 20

    Also rename function parameter $offset to $page

    [EDIT]

    Also what i would do is to query one row more, than needed, so i can detect if there is next page, eg:

    $dt = $this->pheed_model->get_latest_pheeds($limit + 1,$offset);
    $next_page = false;
    if (count($dt) > $limit) {
        $next_page = true;
        $dt = array_pop($dt); // Excluding the last row so it is same size as $limit
    }
    // More code....
    $return['next_page_exists'] = $next_page;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算