2016-12-05 6 views
0

Как разбивать мои строки результата ajax в codeigniter. Я хочу отобразить мой результат ajax, который будет составлять 10-20 строк в партии по 4 или 5 строк на странице. Продвинь меня. Это не Ajax pagination, но это 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)); 
} 
+0

вы должны отступ кода ... – onzinsky

+0

Это не хорошая практика, но вы можете создать HTML в самом контроллере, а затем вернуть этот HTML в вашем AJAX запрос. А затем замените html с помощью jQuery. – kishor10d

ответ

0

jquery datatables попробуйте использовать плагин. Серверная функциональность jquery datatable точно соответствует вашим потребностям. Легче искать данные и сортировать столбцы данных.

контроллер:

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; 

    } 
+0

Я получаю данные ответа, но я не могу его отобразить! Не могли бы вы проверить мой отредактированный код и помочь мне через – Ramya

+0

у вашего контроллера есть некоторая ошибка .... Я обновил ответ с помощью кода контроллера, попробую это и позвольте мне знать –

+0

его не происходит :( – Ramya

Смежные вопросы