0

JSONデータをjquery dataTableにロードする関数があります

(...)
success: function (response) { LoadData(response.d); }
(...)

function LoadData(data)
        {
            $('#tableAnalysis').dataTable({
            "aaData" : data
            });
        }

私の「データ」は次のようになります。

{"d":[{"Key":"sometext","Value":891},{"Key":"someothertext","Value":287},{"Key":"moretext..","Value":233}]}

私のhtmlテーブルは次のようになります:

<table id="tableAnalysis">
  <thead>
    <tr>
      <th>Label</th>
      <th>Frequency</th>
    </tr>
 </thead>
 <tbody>
    <tr>

    </tr>
  </tbody>
</table>

「警告 - 追加されたデータが既知の列数と一致しません」というメッセージが表示され続けます。

dataTables の適切な形式にするために、「データ」をどのように処理すればよいですか? 適切なフォーマットは何ですか?

ありがとう!

4

1 に答える 1

0

配列をaaDataに渡すことはできますが、JSON「オブジェクト」を現在のように渡すことはできないと思います。ストレート配列またはオブジェクトの配列のみを渡すことができます。ただし、DataTables自体にはすでにAjax機能が組み込まれているため、Ajax呼び出しを行ってからaaDataにデータを入力する必要はありません。Ajaxデータの取得を実行してから表示するには、dataTable()関数自体の中ですべてを実行できます。

$(document).ready( function() {
  $('#tableAnalysis').dataTable( {
    "sAjaxSource": "http://someurl.com/someresource.jsp" // obviously, a fake URL
  });
})

予想される形式はJSONです。ただし、JSONは、aaDataパラメーターの使用を含め、特定の方法でフォーマットされることを期待しています。これには、期待される方法でデータ(さらに多くのJSON)が含まれます。

それが整理されたら、データセットが使用可能な列の数(2)と一致するかどうかを確認する必要があるかもしれませんが、期待されるデータをdataTable()関数に渡すまで、あまり心配する必要はありません。

それで、データについて。ここで例を見ることができます:http://datatables.net/release-datatables/examples/data_sources/ajax.html

ルートを使用する場合はsAjaxSource、データのフォーマットも、実行しているものとは異なるものにする必要があります。

{
    "aaData": [
        [
            "sometext",
            891
        ],
        [
            "someothertext",
            287
        ],
        [
            "moretext",
            233
        ]
    ]
}

リソースがこのようにフォーマットされたデータを返す場合、なぜそれが機能しないのかわかりません。<tr>私の一部は、含まれていない要素について心配してい<td>ますが、その点で要件を再確認していません。


余談ですが、元のJSONでは、JavaScriptのキーと値のペアがどのように作成されるかについて少し誤解があります。たとえば、値が「sometext」の「Key」というキーと、値が「891」の「Value」という別のキーがあります。このスキーマを使用できる方法はいくつかあると思いますが、そのセマンティクスは混乱し始めています。;-)ほとんどの場合、キーを「キー」とは呼びませんが、それがキーです。

{
  "name" : "Greg",
  "species" : "monkey",
  "level" : 9000
}

この連想配列では、コロンの左側のすべてがキーであり、右側のすべてが値です。

于 2012-08-09T02:36:18.713 に答える