2012-01-18 89 views
0

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

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加载更多?

回答

2

计算$offset乘以(page number - 1)$limit

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

所以,如果$页是1,那么这将是(1 - 1) * 20 = 0 * 20 = 0

如果$页是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; 
+0

如何确定下一个页面,以便我也可以使用json将它编码为jQuery,以便使用 – MrFoh 2012-01-18 22:51:24

+0

现在就让你知道..你的意思是你怎么知道下一页的网址是什么?那么'$ next_page_number = $ page + 1' – Kristian 2012-01-18 22:56:38

+0

感谢您的帮助 – MrFoh 2012-01-18 23:11:17