【问题标题】:Ajax result rows - how to paginate?Ajax 结果行 - 如何分页?
【发布时间】:2017-04-19 18:32:13
【问题描述】:

如何在 codeigniter 中对我的 ajax 结果行进行分页。我想显示我的 ajax 结果,这将是 10-20 行,每页 4 或 5 行。帮我解决。这不是 Ajax 分页,而是在 ajax 调用中进行 ajax 分页。谢谢

这是我的视图文件:

 <script type="text/javascript" src="https://cdn.datatables.net/v/dt/dt-1.10.12/datatables.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js">    </script>
<script>
 $(document).ready(function(){
 $("#getreport").click(function(){
 var fromdate = $('#date1').val();
 var todate = $('#date2').val();
 $("#header").css("visibility", "visible");
 // $("#bodycontent").empty();
 // $("#bodycontent").html('<div id="subcontent"></div>');
 data =
{
"from"  : fromdate,
"to" : todate
} 
$.post('<?=site_url("Report/managecustomers_report"); ?>', data ,function (data) {
$('#datatable').dataTable({
    data : data
    // columns : [
    // { 'data' : 'picture'},
    // { 'data' : 'customername'},
    // { 'data' : 'contactperson'},
    // { 'data' : 'mobilenumber'},
    // { 'data' : 'phone'},
    // { 'data' : 'email'},
    // ]
});
});     
});
});
</script>
<div class="table-responsive">
    <table class="table allcp-form theme-warning fs13">
        <thead>
            <tr class="bg-light">
                <th class="">Image</th>
                <th class="">Customer Name</th>
                <th class="">Contact Person</th>
                <th class="">Mobile Number</th>
                <th class="">Phone</th>
                <th class="">Email</th>

            </tr>
        </thead>
    </table>
</div>

我的控制器:

public function managecustomers_report()
{

 $query = $this->Reportmodel->customerreport_select($this->input->post('from'),$this->input->post('to'));
 $data = $query['records'];
  $this->output->set_content_type('application/json');
 $this->output->set_output(json_encode($data));
 return $data;
}

我的模型文件:

public function customerreport_select($date1,$date2)
{
$this->db->where('date >=', $date1);
$this->db->where('date <=', $date2);
$query=$this->db->get('customers');
$row = $query->result();
print_r($row);
return array(
'records' => $row,
'count' => count($row));
}

【问题讨论】:

  • 你应该缩进你的代码...
  • 这不是一个好习惯,但是您可以在控制器本身中创建 html,然后在您的 ajax 请求中返回该 html。然后使用 jQuery 替换 html。

标签: jquery ajax codeigniter pagination


【解决方案1】:

尝试使用jquery datatables 插件。 jquery 数据表的服务器端功能完全可以满足您的需求。搜索数据和对数据列进行排序更容易。

控制器:

public function managecustomers_report()
{

 $query = $this->Reportmodel->customerreport_select($this->input->post('from'),$this->input->post('to'));
 $data = $query['records'];
 header('Content-Type: application/json');
 echo json_encode($data);
}

型号:

public function customerreport_select($date1,$date2)
{
    $this->db->where('date >=', $date1);
    $this->db->where('date <=', $date2);
    $query=$this->db->get('customers');
    $row = $query->result();

    return array(
       'records' => $row,
       'count' => count($row));
}

这是我实现服务器端功能的示例,请参考它可能对您有所帮助

查看:

<script>
    $(document).ready(function() {
        var table = $('#inbox').dataTable( {


         "bServerSide": true,
         "sAjaxSource": "<?php echo base_url(); ?>index.php/Inbox_redirect/inbox",
         "bProcessing": true,
        "order": [],
         "bSortable" : true,
          "aaSorting": [[2, 'asc']],
         "sServerMethod": "GET",
         "columns" : [ 
            {"data" : "mailId"},
            {"data" : "mailSender"},
            {"data" : "mailSubject"},
            {"data" : "mailContent"},
            {"data" : "mailSendDate"} ],
        "columnDefs": [
        { 
            "targets": [ 0 ], //first column / numbering column
            "orderable": false, //set not orderable
        },
        ],

    } );
} );



</script>

控制器:

public function inbox()
     {
         $data = array(
                    'receiverEmail' => $this->session->userdata['user_login']['loginEmail'],
            );
        $response = $this->mail_receive->inbox($data);

     $output = array(
                        "iTotalRecords" =>$this->mail_receive->totalRecords($data),
                        "iTotalDisplayRecords" => $this->mail_receive->totalRecords($data),
                         "aaData" => $response,
                );


        header('Content-Type: application/json');
        echo json_encode($output);

     }

型号:

public function inbox($data)
     {
        $con = mysqli_connect("localhost", "root", "","mailman");

        $receiverEmail = $data['receiverEmail'];

        $lenghtLimit = $_REQUEST['iDisplayLength'];

        $startLimit = $_REQUEST['iDisplayStart'];

        $searchTerm = $_REQUEST['sSearch'];



        $querySender = "SELECT userId FROM users WHERE userEmail= '$receiverEmail'";
        $resSender = mysqli_query($con, $querySender);
        $rowSender = mysqli_fetch_assoc($resSender);
        $columnSender = $rowSender["userId"]; 


        $querySender = "SELECT mailId,mailSender,mailSubject,mailContent, mailSendDate FROM mails 
                        WHERE mailContent LIKE '%$searchTerm%' 
                        AND mailReceiver = '$columnSender' 
                        LIMIT $lenghtLimit OFFSET $startLimit ";

        $resSender = mysqli_query($con, $querySender);
        $rowSender = mysqli_fetch_assoc($resSender);

        $myMail = array();
        $test = array();

        while($row = mysqli_fetch_array($resSender))     
        {
            $senderId = $row['mailSender'];

            $querySenderName = "SELECT userName FROM users WHERE userId= '$senderId'";
            $resSenderName = mysqli_query($con, $querySenderName);
            $rowSenderName = mysqli_fetch_assoc($resSenderName);
            $columnSenderName = $rowSenderName["userName"]; 

            $myMail[] = array(
                'mailId' => $row['mailId'],
                'mailSender' => $columnSenderName,
                'mailSubject' => $row['mailSubject'],
                'mailContent' => $row['mailContent'],
                'mailSendDate' => $row['mailSendDate']
                );

            $test[] = $row;



        }
        $startLimit = $startLimit + $lenghtLimit;
        return $myMail;

    }   

【讨论】:

  • 我正在获取响应数据,但我无法显示它!你能检查我编辑的代码并帮助我完成
  • 你的控制器有一些错误......我已经用控制器代码更新了答案,试试这个告诉我
  • 它没有发生 :(
  • 到底是什么问题?错误信息是什么?无效的 json 响应等.....
猜你喜欢
  • 2015-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-22
相关资源
最近更新 更多