codeigniter中的Ajax分页错误

时间:2012-12-29 12:01:03

标签: ajax codeigniter jquery pagination

我有以下代码,我从教程中修改了

但问题是,我无法在我的视图页面中正确显示结果..

如果我在控制器中显示数组然后它正常工作,但在视图中,它抛出错误..

<?php
class test extends CI_Controller {

    public function index($start = 0) {
            $this->load->model('pages_model');
            $data_page=$this->pages_model->get_pages();


    $this->load->helper('url');
    $this->load->library('pagination');

    $config['base_url']   = base_url().'test/index';
    $config['total_rows'] = count($data_page);
    $config['per_page']   = 5;

    $data['user'] = array();

    for($i=$start; $i<$start+$config['per_page']; $i++) 
    {
      if (isset($data_page[$i])) {
        $data['user'] = $data_page[$i];





      }
    }
    //print_r($data['user']['page_id']); // this line displays 3, since the tupple with id 3 has maximum priority 5

    $this->pagination->initialize($config);
    $data['pagination'] = $this->pagination->create_links();

    if ($this->input->post('ajax')) {
      $this->load->view('test', $data);
    } else {
      $this->load->view('test', $data);
    }
  }



}

?>

现在出现了模型

<?php
class pages_model extends CI_Model{
    function __construct() {
        parent::__construct();
    }
function get_pages()
    {
        return $this->db->query("SELECT * FROM td_pages ORDER BY page_priority ASC")->result_array();
    }
}
?>

最后是视图

<!DOCTYPE html>
<html>
<header>
  <title>CodeIgniter Ajax Jquery Pagination</title>
  <script src="<?php echo base_url(); ?>assets/front_assets/js/jquery-1.7.1.min.js"></script>
  <script>
  $(function() {
    applyPagination();

    function applyPagination() {
      $("#ajax_paging a").click(function() {
        var url = $(this).attr("href");
        $.ajax({
          type: "POST",
          data: "ajax=1",
          url: url,
          beforeSend: function() {
            $("#content").html("");
          },
          success: function(msg) {
            $("#content").html(msg);
            applyPagination();
          }
        });
        return false;
      });
    }
  });
  </script>
</header>
<body>

<div id="content">
  <div id="data">
    <?php foreach($page_frag as $ut)
    {?>
        <div><?php echo $ut['page_slug'];?></div>
    <?php } ?>
  </data>

  <div id="ajax_paging">
    <?php echo $pagination; ?>
  </div>
</div>
</div>
</body>
</html>

问题是视图以错误的方式显示结果,但是如果我在控制器中显示,那么它表明控制器中的数组工作正常...

请帮我解决问题

2 个答案:

答案 0 :(得分:1)

您正在ajax请求中加载整个视图,该请求还包含正文和头文本,使用以下内容创建单独的视图并将其加载到您的ajax请求中。

<div id="data">
    <?php foreach($page_frag as $ut)
    {?>
        <div><?php echo $ut['page_slug'];?></div>
    <?php } ?>
</div>

答案 1 :(得分:0)

你正在做的是错误的

分页意味着不仅从客户端从服务器卸载处理能力/ RAM。

你要取消所有结果,然后将它们分页,而你应该要求MySQL为你分页。有第二个查询,为您提供使用它的结果数。

如果您的链接中有index.php,那么您必须使用site_url()而不是base_url()&amp;请注意,两者都接受一个参数,所以你不需要像你那样连接它就像这样:

site_url('test/index');

codeigniter使用GET方法,而在您的javascript代码中,您正在使用POST。

更简单的方法是抓住分页李&gt;分页和标签的标签在容器内处理它。