2016-05-26 5 views
0

Я пытаюсь использовать DataTable для отображения всех полей моего JSON, но я не понимаю, как его использовать.DataTable dataset с JSON

Мне просто нужно правильно заполнить набор данных для чтения данных.

<script> 
     <?php 
      var jqxhr = $.ajax({url: api_ricerca_ingredienti, type: "GET",dataType: "json", data: {all: 1, ln : "it",completo:"-1",conteggio: 1}}) 
       var max=json.items.length; 
       for (i=0;i<max;i++){ 
       var el=json.items[i]; 
       } 
       $(".risultato_ricerca").click(function() { 
       carica_ingrediente($(this).attr('data-id')); 
       }); 
      }) 
      <?php }?> 

      var dataSet = [ 
       /*HOW?*/ 
      ]; 

      $(document).ready(function() { 
       $('#example').DataTable({ 
       data: dataSet, 
       columns: [ 
        { title: "Nome" }, 
        { title: "Stato" }, 
        { title: "Home" }, 
        { title: "Utente" }, 
        { title: "Mi piace" }, 
        { title: "Contributi" } 
       ] 
       }); 
      }); 
      </script> 
      <table id="example" class="table table-responsive table-hover table-dynamic filter-head"></table> 
+1

Вам нужно лучше понять разницу между PHP и Javascript. Код, который у вас есть между вашими PHP-тегами, - это не PHP. –

+0

Вы правы. Спасибо, я новичок, и я не понял этой разницы. В любом случае, знаете ли вы, как я могу заполнить свой набор данных шестью полями из моего json? Еще раз спасибо. – Otto

+0

Ну, было бы очень полезно знать, как создается ваш json, или мы не можем знать, как манипулировать им в правильной структуре. – gbalduzzi

ответ

1

Во-первых, два комментария о вашем коде. Как указано @Patrick Q, ваши PHP-теги бесполезны: вы пишете Javascript, PHP является еще то, что не имеет ничего общего с вашим кодом, так что удалить <?php и <?php }?>

Тогда, я не могу понять этот код :

for (i=0;i<max;i++){ 
    var el=json.items[i]; 
} 

Это абсолютно бесполезно. вы выполняете каждый элемент в json.items без каких-либо операций. В конце вы просто сохраняете последний json.items в el (даже не используя el в своем коде).

Кстати, ваш главный вопрос: Как сказано в official documentation, набор данных должен содержать массив для каждой строки вашей таблицы в формате:

var dataSet = [ 
    ["john","italy","home","john",15,20], 
    ["john","italy","home","john",15,20] 
] 

Этот пример будет создавать две одинаковые строки с случайные данные внутри.

Предполагая, что каждый элемент в вашем JSON имеет name country home user likes contribs поля, нужно что-то вроде этого:

var dataSet = []; 
for (i=0;i<json.items.length;i++){ 
    var el = [json.items[i].name,json.items[i].country, json.items[i].home, json.items[i].user, json.items[i].likes, json.items[i].contribs] 
    dataSet[i] = el; 
} 
0

К сожалению, ребята. Я урезал свой код. Теперь построение массива данных работает как шарм. Я просто сомневаюсь в ошибке консоли: "jquery.dataTables.min.js: 5 Некопать TypeError: Не удается прочитать свойство« aDataSort »неопределенного«

Я не могу показать свои строки. По вашему мнению, в чем проблема?

Спасибо!

<script> 
< ?php 
if (isset($_GET) && isset($_GET['id'])){ 
      ?> 
      $(document).ready(function() { 
       carica_ingrediente('<?php echo $_GET['id'];?>'); 
      }); 
      <?php }else {?> 
      $('#query').keypress(function(e) { 
       if (e.keyCode == $.ui.keyCode.ENTER) { 
       $('#cerca').click(); 
       } 
      }); 
      $(document).ready(function() { 
       var jqxhr = $.ajax({url: api_ricerca_ingredienti, type: "GET",dataType: "json", data: {all: 1, ln : "it",completo:"-1",conteggio: 1}}) 
       .done(function(json) { 
       if (json.res==0){ 
        alert("Inserisci una parola per iniziare la ricerca "); 
        return; 
       } 
       var dataSet = []; 
       for (i=0;i<json.items.length;i++){ 
        var el = [json.items[i].nome,json.items[i].completo, json.items[i].home, json.items[i].utente, json.items[i].likes, json.items[i].countingredienti]; 
        dataSet[i] = el; 
        console.log(el); 
       } 
       $(".risultato_ricerca").click(function() { 
        carica_ingrediente($(this).attr('data-id')); 
       }); 

       $(document).ready(function() { 
        $('#example').DataTable({ 
        data: dataSet, 
        columns: [ 
         { title: "Nome" }, 
         { title: "Stato" }, 
         { title: "Home" }, 
         { title: "Utente" }, 
         { title: "Mi piace" }, 
         { title: "Contributi" } 
        ] 
        }); 
       }); 
       }) 
       .fail(function() { 
       alert("error"); 
       }); 

      }); 

      <?php }?> 
      </script> 
Смежные вопросы