2014-11-17 2 views
1

Во-первых, извините за мое плохое объяснение. В настоящее время у меня есть таблица, которая, вероятно, будет вставлена ​​в данные до 3000, и у меня есть предложение людей использовать данные. Но я действительно новичок в этом, и я уже попробуйте другие примеры данных, но все еще не работают.создавать данные из массива json

Я уже создаю datatables для серверной стороны, которая является источником данных объекта, но кажется, что она не работает хорошо, как то, что я ожидал. Пожалуйста, помогите мне показать правильный способ создания данных с помощью источника данных json Object .Below is my код:

 <script type="text/javascript" charset="utf8" src="../cdc/datatables/media/js/jquery-1.11.1.min.js"></script> 

     <script type="text/javascript" charset="utf8" src="../cdc/datatables/media/js/jquery.dataTables.min.js"></script> 

     <script language="javascript"> 
$(document).ready(function() { 
    $('#cdcTracking-list').dataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": "../cdc/load/jsonTrack.php", 
     "columns": [ 
      { "elements": "vesselCode" }, 
      { "elements": "voyage" }, 
      { "elements": "chasisNo" }, 
      { "elements": "plateNo" }, 
      { "elements": "bookingRef" }, 
      { "elements": "serviceTerm" } 
     ] 
    }); 
}); 
     </script> 

<table id="cdcTracking-list" class="display"> 
     <thead> 
      <tr> 
       <th>No. </th> 
       <th>Vessel </th> 
       <th>Voyage </th> 
       <th>Chasis No</th> 
       <th>Plate</th> 
       <th>Booking Ref</th> 
      </tr> 
     </thead> 
    </table> 

$getSessionList = getVehicleTrkDetail(); 
if (count($getSessionList) > 0) { 
    $data = array(); 
    for ($i = 0; $i < count($getSessionList); $i ++) { 
     $getSessionListRecord = $getSessionList[$i]; 
     $data[$i] = array(
      vesselCode => $getSessionListRecord['vesselCode'], 
      voyage => $getSessionListRecord['voyage'], 
      chasisNo => $getSessionListRecord['chasisNo'], 
      plateNo => $getSessionListRecord['plateNo'], 
      bookingRef => $getSessionListRecord['bookingRef'] 
     ); 
    } 
    $json = array(
     status => "success", 
     elements => $data 
    ); 
} else { 
    $json = array(
     status => "failure" 
    ); 
} 
echo json_encode($json); 

{"status":"success","elements":[ 
{"vesselCode":"CE", 
"voyage":"V01", 
"chasisNo":"PL82A53DR61302244 ", 
"plateNo":null, 
"bookingRef":"V007\/E\/-00006"}, 
{"vesselCode":"CE", 
"voyage":"V01", 
"chasisNo":"PL1C21LNR6B101100", 
"plateNo":null, 
"bookingRef":"V007\/E\/-00006"} 

Пожалуйста, кто поможет мне для моего начинающего experience.Thanks

+0

Так что происходит? любые ошибки в панели Firebug Net? – markpsmith

ответ

2

я имел немного проблем с этим тоже, когда я пытался собрать свои первые АЯКС загружены таблицы, а также , Вы можете использовать json из структуры массива или структуры класса, мой подход использует stdClass.

javascript:
Для установки значений из вашего json вам необходимо указать поле данных. Вы можете также установить классы столбцов и все остальное здесь, если вы планируете использовать любой вводя в моду

<script language="javascript"> 
$(document).ready(function() { 
    $('#cdcTracking-list').dataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": "../cdc/load/jsonTrack.php", 
     "columns": [ 
      { "data": "number" }, 
      { "data": "vesselCode" }, 
      { "data": "voyage" }, 
      { "data": "chasisNo" }, 
      { "data": "plateNo" }, 
      { "data": "bookingRef" } 
     ] 
    }); 
}); 
</script> 

РНР:
В таблице также ожидает, что данные, которые вы обслуживаете, чтобы быть в массиве с ' data 'или класса с свойством data. Поэтому везде, где вы видите, что «stdClass» просто заменяет массив, если вы так склонны.

<?php 
$getSessionList = getVehicleTrkDetail(); 
//As I stated before, I used a class for my data. 
//You can also use an array but it still needs a 'data' field 
$tableData = new stdClass(); 
$tableData->data = array(); 

if (count($getSessionList) > 0) { 

    for ($i = 0; $i < count($getSessionList); $i ++) { 
     $getSessionListRecord = $getSessionList[$i]; 

     $data = new stdClass(); //Changed to class here 
     $data->number  = $i; 
     $data->vesselCode = $getSessionListRecord['vesselCode']; 
     $data->voyage  = $getSessionListRecord['voyage']; 
     $data->chasisNo  = $getSessionListRecord['chasisNo']; 
     $data->plateNo  = $getSessionListRecord['plateNo']; 
     $data->bookingRef = $getSessionListRecord['bookingRef']; 

     array_push($tableData->data, $data); 

     //Since you don't declare this in the javascript for the table, 
     //you shouldn't have it served up. 
     //Otherwise you will get a DataTables error 
     //$data->serviceTerm = 'Service Term'; 
    } 

    $tableData->status = "success"; 
} else { 
    //Note: this will also cause an error because you're not serving up any 
    //  fields that the API is expecting. You might want to at least have 
    //  empty fields or default data so it displays something. 
    $tableData->status = "failure"; 
} 
echo json_encode($tableData); 
?> 
+0

спасибо за ваше time.did Мне нужно создать новый класс или просто использовать stdClass()? – art

+0

Вы можете просто использовать stdClass. Единственная цель этого - общий контейнер для возврата обратно в API DataTables. О, и я только понял, что я забыл нажать запись на поле tableData. Я исправлю, что –

+0

emm .. кажется, что моя таблица не показывает какой-либо вывод, а данные datatables дают ошибку о некорректном ответе json – art

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