【问题标题】:Codeigniter: How to fix pagination links, not updating when clicked, using ajaxCodeigniter:如何使用ajax修复分页链接,单击时不更新
【发布时间】:2019-08-15 13:00:50
【问题描述】:

我正在尝试使用 ajax 将分页链接放入我的网站以防止页面刷新。我设法使它工作,但分页链接没有更新。当我单击下一页时,页面将加载,但分页链接将保留在第 1 页上。我尝试将 $this->pagination->create_links(); 放入变量中并将其回显到 div 中,但它没有显示任何内容。这是我的代码:

型号:

public function get_posts($limit = FALSE, $rowno = FALSE)
        {
            if($limit)
            {
                $this->db->limit($limit, $rowno);
            }

            $this->db->select('*, posts.image AS post_image, posts.id AS post_id, posts.user_id AS post_user_id');
            $this->db->from('posts');
            $this->db->join('categories', 'categories.id = posts.category_id');
            $this->db->join('users', 'users.id = posts.user_id');
            $this->db->order_by('posts.created_at', 'DESC');

            $query = $this->db->get();
            return $query->result_array();
        }

控制器:

public function index()
        {
            // pagination page number
            $pageno = $this->input->post('pageno');

            // pagination config
            // $config['base_url'] = base_url()."posts/index";
            $config['base_url'] = '#';
            $config['total_rows'] = $this->db->count_all('posts');
            $config['per_page'] = 2;
            $config['num_links'] = 3;
            $config['attributes'] = array('class' => 'pagination-class');
            $config['full_tag_open'] = '<div id="paginator">';
            $config['full_tag_close'] = '</div>';

            $data['posts'] = $this->post_model->get_posts($config['per_page'], $pageno);
            $data['title'] = 'Latest Posts';

            $data['pagination'] = $this->pagination->create_links();
            $data['row'] = $pageno;

            // init pagination
            $this->pagination->initialize($config);

            $this->load->view('posts/index', $data);

        }

查看:

<div id="pagination">
            <?php echo $this->pagination->create_links(); ?>
    </div>

ajax:

$('#paginator').on('click', 'a', function(e) {
        e.preventDefault();

        var pageno = $(this).attr('data-ci-pagination-page');

        $.ajax({
            data : { 'pageno' : pageno },
            method : 'post',
            // dataType : 'json',
            url : base_url + 'posts/index',
            success : function(response) {
                $("#main_container").html(response);
            }
        });

【问题讨论】:

  • 你有没有加载像$this-&gt;load-&gt;library('pagination');这样的分页库
  • 您将此$this-&gt;pagination-&gt;create_links(); 分配给$data['pagination']。因此,与其呼应create_links(),不如只在视图中显示echo $pagination
  • @EvinceDevelopment 我在自动加载文件中加载了分页库
  • @kishor10d 当我回显 $data['pagination'] 时它没有显示任何内容
  • 哦,我的错。我将$this-&gt;pagination-&gt;create_links(); 放在$this-&gt;pagination-&gt;initialize('$config'); 之前。 create_links() 应该在初始化之后。它现在显示分页链接,但仍未更新我的分页链接。它仍然停留在第 1 页。

标签: php jquery ajax codeigniter pagination


【解决方案1】:

可能是您使用了错误的元素 ID?

pagination X paginator?

<div id="pagination"> </div>
$('#pagination') /* .... */

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多