Codeigniter 中的 Ajax 无限滚动

我正在使用 codeigniter 开发我的旅行社网站。我想在我的游览或博客列表页面上使用无限滚动,我想每次滚动页面时获取 5 个项目,但是当 ajax 发送请求时我一次只能获取一项数据。


这是我的控制器


//blog list & Views   

public function blogs()

    {

    $data = $this->data;

    $blogid = $this->uri->segment('3');

    if($blogid == NULL){

        $this->load->view('themes/ui/blogs/bloglist1', $data);     

    }else{

      $data['blogdata'] = $this->ui_model->blogdetails($blogid);

      $this->load->view('themes/ui/blogs/blogdetails1', $data);       

    }

}



//infinite scroll for blogs   

public function fetch_blogs()

 {

  $output = '';

  $limit = $this->input->post('limit');

  $start = $this->input->post('start');    

  $moredata = $this->ui_model->fetch_blogs($limit, $start);

  if($moredata->num_rows() > 0)

  {

   foreach($moredata->result() as $row)

    {

    

    $data['blogdata'] = array(

        'title' => $row->title,

        'banner' => $row->banner,

        'blogid' => $row->id,

        'slug' => $row->slug

        );   

       $output = $this->load->view('themes/ui/blogs/blog_grid1',$data,true);

   }  

      

  }

  echo $output;

 }

这是模型


function fetch_blogs($limit, $start)

     {

      $this->db->set_dbprefix('');    

      $this->db->select("*");

      $this->db->from("blogs");

      $this->db->order_by("id", "DESC");

      $this->db->limit($limit, $start);

      $query = $this->db->get();

      return $query;           

     }

这是查看 blog_grid1.php


    <div class="mb-4">

<a class="d-block" href="<?=base_url();?>en/blogs/<?=$blogdata['blogid'];?>/<?=$blogdata['slug'];?>">

    <img class="img-fluid mb-4 rounded-xs w-100" src="<?=$blogdata['banner'];?>" alt="<?=$blogdata['title'];?>">

</a>

<h5 class="font-weight-bold font-size-21 text-gray-3">

    <a href="<?=base_url();?>en/blogs/<?=$blogdata['blogid'];?>/<?=$blogdata['slug'];?>"><?=$blogdata['title'];?></a>

</h5>


这里的问题是“每次 ajax 发送请求时,它只得到一个响应结果..”


但是“如果我直接在控制器中编写“view_blog_grid1.php”的html代码,那么它会按预期工作。


但我不想让控制器因大量 html 代码而变得混乱,而且我有多个网格模板,如 grid1、grid2、...,我想动态加载。


猛跑小猪
浏览 114回答 1
1回答

翻翻过去那场雪

问题就在这里$output&nbsp;=&nbsp;$this->load->view('themes/ui/blogs/blog_grid1',$data,true);您正在为输出设置新值,这将仅导致(5th)foreach 循环中的最后一行,要解决这个问题,只需附加$this->load->view('themes/ui/blogs/blog_grid1',$data,true)到$output变量$output&nbsp;.=&nbsp;$this->load->view('themes/ui/blogs/blog_grid1',$data,true);NB*.=运算符意味着附加并且等于:&nbsp;$output&nbsp;=&nbsp;$output&nbsp;.&nbsp;$this->load->view('themes/ui/blogs/blog_grid1',$data,true)
打开App,查看更多内容
随时随地看视频慕课网APP