jquery DataTable 数据格式和警告 - 添加的数据与已知列数不匹配

jquery DataTable data format and Warning - added data does not match known number of columns

本文关键字:不匹配 数据 数据格式 DataTable 警告 添加 jquery      更新时间:2023-09-26

我有一个函数,可以将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>

我不断收到"警告 - 添加的数据与已知列数不匹配"。

我应该如何处理我的"数据"才能使数据表的格式正确?正确的格式是什么?

谢谢!

虽然你可以将数组传递给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
        ]
    ]
}

如果您的资源返回以这种格式格式的数据,我不明白为什么它不起作用。我的一部分担心不包含<td><tr>元素,但我没有仔细检查这方面的要求。


顺便说一句:对于原始的JSON,您对JavaScript键值对的创建方式表现出一些误解。例如,您有一个名为"Key"的键,其值为"sometext",然后是另一个名为"Value"的键,其值为"891"。我想有很多方法可以使用这种模式,但它的语义开始变得混乱。;-)大多数时候,你不会称你的密钥为"Key",它只是密钥:

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

在这个关联数组中,冒号左侧的所有内容都是键,右侧的所有内容都是值。