我正在使用 jQuery DataTables 并寻找一种如何完全从 JSON 生成 DataTable 的方法。这应该包括列数、它们的名称、行数据,但也可能包括其他设置,如排序。我已经看到这是可能的,但在许多可能的方法中,对我来说并不多。

这是我的代码,你能帮我修复错误并详细说明我当前的 JSON 配置吗?

JSON - 尽可能多地放在这里:

{
    "columns": [
        [ "title" : "DT_RowId" ],
        [ "title" : "supplier" ],
        [ "title" : "color" ],
    ],
    "data": [
        [ "row_3", "small", "red" ],
        [ "row_3", "medium", "blue" ],
        [ "row_3", "medium", "blue" ],
        [ "row_11", "large", "blue" ],
    ]
}

JS:
$('#example').DataTable( {
    "ajax" : {
        "url": "http://127.0.0.1/tabledata.json",
        "type": "GET",
        "contentType" : "application/json",
        "dataType" : "jsonp",
    },
});

HTML - 应保持最少:
<table id="example"></table>

当前错误:

最佳答案

首先,您需要使 JSON 正确。不需要将每个 column 作为数组,并且 data 部分根本不是有效的 JSON - 它应该是名称->值对。当您想在传递的 JSON 中包含所有信息时,您可以对 tabledata.json 使用以下布局:

{
    "columns": [
        { "data" : "DT_RowId", "title" : "Id" },
        { "data" : "supplier", "title" : "supplier" },
        { "data" : "color", "title" : "color" }
    ],
    "data": [
        { "DT_RowId" : "row_3", "supplier" : "small", "color" : "red" },
        { "DT_RowId" : "row_3", "supplier" : "medium", "color" : "blue" },
        { "DT_RowId" : "row_3", "supplier" : "medium", "color" : "blue" },
        { "DT_RowId" : "row_11", "supplier" : "large", "color" : "blue" }
    ]
}

最小标记:

<table id="example"/>

并且 dataTable 初始化变得非常简单:

$.getJSON('http://127.0.0.1/tabledata.json', function(json) {
  $('#example').DataTable({
     data : json.data,
     columns : json.columns
  })
});

这里没有直接在dataTable上使用ajax属性的原因是由于javascript异步性的性质。如果您在 dataTable 上使用了 ajax url,它将在加载 JSON 之前创建,因此它会失败,因为 columns 尚未定义。

演示 -> http://jsfiddle.net/xqu37Lka/

如果您想在 JSON 中包含其他设置,只需将它们添加到 JSON,例如默认排序:
{
    "columns": [...],
    "data" : [...],
    "order": [[ 3, "desc" ]]
}

并在 dataTable 初始化中包含 json.order

关于jquery - DataTables:从 JSON 生成整个表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33682122/

10-12 12:58
查看更多