【问题标题】:jquery DataTable data format and Warning - added data does not match known number of columnsjquery DataTable 数据格式和警告 - 添加的数据与已知列数不匹配
【发布时间】:2012-08-05 10:23:04
【问题描述】:

我有一个将 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 提供正确的格式?正确的格式是什么?

谢谢!

【问题讨论】:

    标签: javascript jquery json jquery-plugins datatables


    【解决方案1】:

    虽然您可以将数组传递给 aaData,但我认为您不能以您正在做的方式将 JSON“对象”传递给它。您只能传递一个直接数组或对象数组。但是您不需要在填充 aaData 之后执行 Ajax 调用,因为 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
            ]
        ]
    }
    

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


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

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

    在这个关联数组中,冒号左边的都是键,右边的都是值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 2021-03-31
      相关资源
      最近更新 更多