使用json加载更多功能

时间:2012-01-18 22:25:56

标签: php codeigniter

我正在尝试在我正在构建的Web应用程序中实现加载更多功能。 当应用程序加载时,它会对控制器进行ajax调用,该控制器从数据库中检索数据,然后使用JSON对它们进行编码。 我正在使用mysql查询中的限制和偏移量,当用户向下滚动时,我会加载更多数据。 这是控制器中进行ajax调用的方法

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");
            }
        }

如何将这些数据分解为页面,所以我可以通过ajax调用简单地将页面作为参数传递给方法,以便用jQuery实现更多的加载?

1 个答案:

答案 0 :(得分:2)

通过将$offset(page number - 1)相乘来计算$limit

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

因此,如果$ page为1,那么它将是(1 - 1) * 20 = 0 * 20 = 0

如果$ page为2,那么它将是(2 - 1) * 20 = 1 * 20 = 20

还将函数参数$offset重命名为$page

[编辑]

我还要做的是查询一行,而不是需要,所以我可以检测是否有下一页,例如:

$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;