2016-05-26 1 views
0

У меня есть функция, которую я звоню из ajax.i Я получаю данные в формате json из функции. Я хочу отображать все данные в списке таблиц по одному. Моя функция работает правильно и получает данные ... но я не могу понять, как эхо-данные в представлении списка таблиц. , пожалуйста, помогите мне повторить это в моем столе.Как эхо json данные в виде списка таблиц

данные ниже - данные ответа, которые я получаю от вызова ajax.

{"count":[{"drivers":{"name":"Lucky","mobile":"9960181380"},"DispatchedJob":{"startdate":"2016-05-11","created":"2016-05-26 14:08:06"},"job":{"shipment_title":"Ship goods"}},{"drivers":{"name":"Lucky","mobile":"9960181380"},"DispatchedJob":{"startdate":"2016-05-01","created":"2016-05-26 10:03:25"},"job":{"shipment_title":"Ship goods"}}]} 

моя CakePHP функция.

public function fetchDriverlist() 
{ 
    $this->autoRender = false;   
    $this->loadModel('DispatchedJob'); 
    $driverlist = array(); 
    if (isset($this->request['data']['id'])) { 
     $driverlist = $this->DispatchedJob->find('all', array(
     'recursive' => -1, 
     'conditions' => array('DispatchedJob.driver_id' => $this->request['data']['id']), 
     'fields' => array('drivers.name','drivers.mobile','DispatchedJob.startdate','DispatchedJob.created','job.shipment_title'), 
     'joins' => array(
       array(
        'table' => 'drivers', 
        'alias' => 'drivers', 
        'type' => 'LEFT',     
        'conditions'=> array('DispatchedJob.driver_id = drivers.id') 
       ), 
       array(
        'table' => 'jobs', 
        'alias' => 'job', 
        'type' => 'LEFT',     
        'conditions'=> array('DispatchedJob.job_id = job.id') 
       )   
      ), 
      'order' => array('DispatchedJob.id'=>'DESC') 
     )); 
    } 
    header('Content-Type: application/json');   
    return json_encode(array('count' => $driverlist));  
    exit(); 
} 

мой Аякса сценарий

<script> 
$(document).ready(function() { 
    $("#driver").on('change', function() { 
     var id = $(this).val(); 
     if (id) { 
     var dataString = 'id=' + id; 
     var values = $(this).serialize(); 
     ajaxRequest= $.ajax({ 
      url: '<?php echo Router::url(array("controller" => "Drivers", "action" => "fetchDriverlist")); ?>', 
      type: 'post', 
      data: dataString, 
      success: function(response, data) { 
      if(data == "success") {   
       var return_data = $.parseJSON(response); 
       $("#datatable").html(return_data['count']); 
      } 
      }, 
     }); 
    } 
    }); 
}); 
</script> 

Я хочу, чтобы отобразить данные в таблице ниже

<table class="table table-striped"> 
         <tbody> 
         <tr>      
         <th>name</th> 
         <th>mobile</th> 
         <th>startdate</th> 
         <th>shipment title</th> 
         </tr> 

         <tr>      
         <th>Lucky</th> 
         <th>9960181380</th> 
         <th>2016-05-11</th> 
         <th>Ship goods</th> 
         </tr> 
         <tr>      
         <th>Lucky</th> 
         <th>9960181380</th> 
         <th>2016-05-01</th> 
         <th>Ship goods</th> 
         </tr> 
         </tbody></table> 

ответ

-1

Попробуйте этот код:

header('Content-Type: application/json'); 
    $json= json_encode($Data, JSON_PRETTY_PRINT); 
    print_r($json); 
+0

но как эхо данных в моей таблице ... –

+0

функция использование json_decode это дает вам использовать массив массива, как Уры хотят – srinivas

3

HTML:

<table> 
<tboday id='print'> 
</tbody> 
</table> 

Javascript для отображения данных в таблице

var tr; 
for(var i=0;i<html.length;i++){ 
tr=tr+"<tr><td>youe_value</td><td>Your_value</td></tr>"; 
} 
$('#print').html(tr); 

выход

<table> 
<thead> 
<tr>      
<th>Job Title</th> 
<th>Vehicle Type</th> 
</tr> 
</thead> 
<tbody> 
<tr>      
<td>Your value</td> 
<td>Your value</td> 
</tr> 
</tbody> 
</table> 
+0

но как напечатать мое значение внутри td..i я получаю идентификатор и дату –

+0

HTML [я] .yourvalue –

+0

HTML [я] .id HTML [я] .date –

0

Вот ваш ответ:

$(document).ready(function() { 
 

 
var return_data = {"count":[{"drivers":{"name":"Lucky","mobile":"9960181380"},"DispatchedJob":{"startdate":"2016-05-11","created":"2016-05-26 14:08:06"},"job":{"shipment_title":"Ship goods"}},{"drivers":{"name":"Lucky","mobile":"9960181380"},"DispatchedJob":{"startdate":"2016-05-01","created":"2016-05-26 10:03:25"},"job":{"shipment_title":"Ship goods"}}]}; 
 

 
var tbody_content = ""; 
 

 
$.each(return_data.count, function (index, item) { 
 
    tbody_content += 
 
    "<tr>" + 
 
     "<td>" + item.drivers.name + "</td>" + 
 
     "<td>" + item.drivers.mobile + "</td>" + 
 
     "<td>" + item.DispatchedJob.startdate + "</td>" + 
 
     "<td>" + item.job.shipment_title + "</td>" + 
 
    "</tr>"; 
 
}); 
 

 
$('.table').find('tbody').html(tbody_content); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<table class="table table-striped"> 
 
    <thead> 
 
    <tr>      
 
     <th>name</th> 
 
     <th>mobile</th> 
 
     <th>startdate</th> 
 
     <th>shipment title</th> 
 
    </tr> 
 
    </thead> 
 
    <tbody> 
 
    </tbody> 
 
</table>

+0

Привет user3087472, я обновил свой вопрос с моей функции CakePHP и функции AJAX, а также обновленный там, как мне нужно отображать мои данные внутри таблицы .... пожалуйста, помогите мне эхо-данные внутри ta ble..which идет от ajax ..... –

+0

Я также обновляю данные, которые получаю .... Мне нужно только эхо изнутри внутри таблицы ..... –

+0

Почему вы возвращаете массив ('count' => $ driverlist)? Для чего «счет»? – user3087472

0

HTML:

JS в Ajax обратного вызова:

// Data from your ajax call 
var data = {"count":[{"drivers":{"name":"Lucky","mobile":"9960181380"},"DispatchedJob":{"startdate":"2016-05-11","created":"2016-05-26 14:08:06"},"job":{"shipment_title":"Ship goods"}},{"drivers":{"name":"Lucky","mobile":"9960181380"},"DispatchedJob":{"startdate":"2016-05-01","created":"2016-05-26 10:03:25"},"job":{"shipment_title":"Ship goods"}}]}; 

var trs = []; 
for(var i in data.count){ 
    trs.push("<tr><td>" + data.count[i].drivers.name + 
    "</td><td>" + data.count[i].drivers.mobile + "</td>" + 
    "<td>" + data.count[i].DispatchedJob.startdate + "</td>" + 
    "<td>" + data.count[i].job.shipment_title + "</td>"); 
} 
$('table tbody').html(trs.join('')); 

не cancat строка в цикле, он всегда выделяет память, так что вы можете легко выйти из исключения памяти.

demo fiddle

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