【问题标题】:Ajax Pagination Error in codeignitercodeigniter中的Ajax分页错误
【发布时间】:2012-12-14 10:09:48
【问题描述】:

我有以下从教程修改的代码

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

如果我在控制器中显示数组,那么它可以正常工作,但在视图中,它会抛出错误..

<?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>

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

请帮我解决问题

【问题讨论】:

    标签: ajax codeigniter jquery pagination


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      你做错了

      分页旨在减轻服务器的处理能力/内存,而不仅仅是客户端。

      您正在提取所有结果,然后对它们进行分页,同时您应该要求 MySQL 为您分页并有第二个查询来为您提供要使用它的结果数量。

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

      site_url('test/index');
      

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

      一个更简单的方法是捕获分页 li > 一个分页标签并在容器内处理它。

      【讨论】:

      • 谁告诉你codeigniter只使用GET方法?? POST 方法总是有用的
      猜你喜欢
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 2011-05-23
      • 2013-04-16
      • 1970-01-01
      相关资源
      最近更新 更多