CodeIgniter 原生分頁類未內建 AJAX 支援,但透過 $config['anchor_class'] 參數配合 jQuery 即可輕鬆實現無刷新分頁,無需擴展或重寫核心類。
$config['anchor_class'] = 'class="ajax_fpage"';,讓分頁連結帶上特定 class。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');
}
<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>
$this->input->is_ajax_request()),返回局部 HTML 片段而非完整頁面。base_url 需包含當前頁參數,確保 AJAX 請求 URL 正確。此技巧同樣適用於其他 MVC 框架(Laravel、ThinkPHP 等),只需在分頁組件輸出時加上特定 class 並綁定 JS 事件。