1

私はチュートリアルから変更した次のコードを持っています

しかし問題は、ビューページに結果を正しく表示できないことです..

コントローラーに配列を表示すると、正常に動作しますが、ビューではエラーがスローされます..

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

問題は、ビューが結果を間違った方法で表示していることですが、コントローラーに表示すると、コントローラーの配列が完全に機能していることがわかります...

問題を解決するのを手伝ってください

4

2 に答える 2

1

本文とヘッドテキストも含むビュー全体を ajax リクエストにロードしています。次のコンテンツで別のビューを作成し、それを ajax リクエストにロードします。

<div id="data">
    <?php foreach($page_frag as $ut)
    {?>
        <div><?php echo $ut['page_slug'];?></div>
    <?php } ?>
</div>
于 2012-12-29T12:09:30.983 に答える
0

あなたがしていることは間違っています

ページネーションは、クライアント側からだけでなく、サーバーから処理能力/RAM をオフロードすることを目的としています。

すべての結果を引き出してからそれらをページ分割し、MySQL にページ分割を依頼し、それを使用する結果の数を得るために 2 番目のクエリを作成する必要があります。

リンクに index.php がある場合は、base_url() の代わりに site_url() を使用する必要があります。どちらも引数を受け入れるため、次のように連結する必要はありません。

site_url('test/index');

codeigniter は GET メソッドを使用しますが、JavaScript コードでは POST を使用しています。

もっと簡単な方法は、ページネーションの li > a タグをキャッチして、コンテナ内で処理することです。

于 2012-12-29T15:26:57.553 に答える