我有一个将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的正确格式?什么是正确的格式?
谢谢!
答案 0 :(得分:0)
虽然您可以将数组传递给aaData,但我认为您不能按照您的方式传递JSON“对象”。您只能传递直接数组或对象数组。但是您不需要执行Ajax调用,然后填充aaData,因为DataTables本身已经具有内置的Ajax功能。要执行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键值对表现出一点误解。您有一个名为“Key”的键,其值为“sometext”,然后是另一个名为“Value”的键,其值为“891”。您可以尝试使用此模式的方法,但它的语义开始变得混乱。 ;-)大多数情况下你不打电话给你的钥匙“钥匙”,它只是是钥匙:
{
"name" : "Greg",
"species" : "monkey",
"level" : 9000
}
在这个关联数组中,冒号左侧的所有内容都是键,右侧的所有内容都是值。