2016-05-26 12 views
0

DataTableを使用してJSONのすべてのフィールドを表示しようとしていますが、使用方法がわかりません。JSONを使用したDataTableデータセット

私は、データセットを正しく読み込んでデータを読み込む方法が必要です。

<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の6つのフィールドを設定するにはどうすればよいですか? もう一度ありがとうございます。 – Otto

+0

jsonがどのように構築されているかを知ることは本当に役に立ちます。正しい構造に操作する方法がわからない場合 – gbalduzzi

答えて

1

まず、コードに関する2つのコメント。 @Patrick Qが述べたように、あなたのPHPタグは無用です:あなたはJavascriptを、PHPを書いているが、あなたのコードとは何の関係もない別のものですので、次に<?php<?php }?>

を削除し、私はこのコードを理解することはできません:

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

これはまったく役に立たない。 json.itemsのすべての要素を何も操作せずに循環させます。最後にjson.itemselに保存します(コードにelを使用しなくても)。

ところで、あなたの主な質問: としてはofficial documentationに言った、あなたのデータセットが形式で、テーブルのすべての行の配列が含まれている必要があります。

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

この例では、2つの同一の行を作成しますが内部のランダムなデータ。

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

申し訳ありませんが、みんな:あなたのJSON内のすべての項目を想定し

は、あなたがそのような何かが必要になりますname country home user likes contribsフィールドがあります。私は前のコードを切り捨てました。今すぐデータ配列の建物は魅力のように動作します。 "jquery.dataTables.min.js:5 Uncaught 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> 
関連する問題