为了账号安全,请及时绑定邮箱和手机立即绑定

Codeigniter 中的 Ajax 无限滚动

Codeigniter 中的 Ajax 无限滚动

PHP
猛跑小猪 2023-06-24 17:42:46
我正在使用 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、...,我想动态加载。
查看完整描述

1 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

问题就在这里

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

您正在为输出设置新值,这将仅导致(5th)foreach 循环中的最后一行,

要解决这个问题,只需附加$this->load->view('themes/ui/blogs/blog_grid1',$data,true)$output变量

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

NB*.=运算符意味着附加并且等于:

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


查看完整回答
反对 回复 2023-06-24
  • 1 回答
  • 0 关注
  • 113 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信