首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

CodeIgniter 實現 AJAX 分頁:利用 anchor_class 參數無需擴展核心類

     編輯:PHP 相關知識

CodeIgniter 原生分頁類未內建 AJAX 支援,但透過 $config['anchor_class'] 參數配合 jQuery 即可輕鬆實現無刷新分頁,無需擴展或重寫核心類。

核心思路

  1. 設定 $config['anchor_class'] = 'class="ajax_fpage"';,讓分頁連結帶上特定 class。
  2. 前端用 jQuery 代理點擊事件,阻止預設跳轉,以 AJAX 請求取得分頁內容並更新局部 DOM。

後端控制器代碼

function ContentList($id, $p = 0) {
    $this->load->library('pagination');
    $config['base_url'] = site_url('qyadmin/ContentList/' . $id . '/' . $p);
    $config['total_rows'] = $this->admin->content_list($id, $p, 1); // 獲取總數
    $config['per_page'] = 5;
    $config['uri_segment'] = 5;
    $config['first_link'] = FALSE;
    $config['last_link'] = FALSE;
    $config['full_tag_open'] = '<p>';
    $config['full_tag_close'] = '</p>';
    $config['display_pages'] = FALSE;
    $this->load->helper('url');
    $skin_url = base_url() . APPPATH . 'views/templates';
    $config['next_link'] = '<img src="' . $skin_url . '/images/page_next.gif">';
    $config['next_tag_open'] = '<li class="fr">';
    $config['next_tag_close'] = '</li>';
    $config['prev_link'] = '<img src="' . $skin_url . '/images/page_prev.gif">';
    $config['prev_tag_open'] = '<li class="fr">';
    $config['prev_tag_close'] = '</li>';
    $config['anchor_class'] = 'class="ajax_fpage"'; // 關鍵行
    $this->pagination->initialize($config);
    $content = $this->admin->content_list($id, $p, 0, $config['per_page'], $this->uri->segment(5));
    $fpage = $this->pagination->create_links();
    $this->smarty->assign('fpage', $fpage);
    $this->smarty->assign('content', $content);
    $this->smarty->view('show.tpl');
}

前端 JS(放在視圖模板中)

<script>
$(document).on('click', '.ajax_fpage', function(e) {
    e.preventDefault(); // 阻止連結預設跳轉
    var url = $(this).attr('href');
    $.get(url, {}, function(res) {
        $('#show_what_table').html(res); // 更新目標容器
    });
});
</script>

優點

  • 零侵入核心類,升級 CI 版本不受影響。
  • 前後端分離清晰,控制器邏輯不變,視圖只需加入 JS。
  • 支援任意分頁樣式(圖片、文字、Bootstrap 等)。

注意事項

  • 控制器需區分 AJAX 請求與完整頁面請求(可檢測 $this->input->is_ajax_request()),返回局部 HTML 片段而非完整頁面。
  • 分頁連結的 base_url 需包含當前頁參數,確保 AJAX 請求 URL 正確。
  • 若專案使用 PJAX/TurboLinks 等庫,可進一步優化瀏覽器歷史記錄管理。

此技巧同樣適用於其他 MVC 框架(Laravel、ThinkPHP 等),只需在分頁組件輸出時加上特定 class 並綁定 JS 事件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved