【问题标题】:DataTables fill table from JSON or JS Array&ObjectsDataTables 从 JSON 或 JS Array&Objects 填充表格
【发布时间】:2018-08-03 11:41:16
【问题描述】:

我有一个表,我用 jquery(html) 填充它。为了限制显示行,我一直在尝试将此表更改为数据表。

我有这样的数据:

dataArray = [{
    id: 1,
    props: {
        abc: 123,
        def: 456,
        ghi: 789
    },
    features: {
        zxc: 01,
        cvb: 02,
        nmn: 03
    }
},
{
    id: 2,
    props: {
        abc: 002,
        def: 258,
        ghi: 965
    },
    features: {
        zxc: 52,
        cvb: 21,
        nmn: 75
    }
},
{
    id: 3,
    props: {
        abc: 352,
        def: 365,
        ghi: 778
    },
    features: {
        zxc: 21,
        cvb: 45,
        nmn: 03
    }
},

]

比方说,我想显示 idabc(来自道具)、zxc(来自特征)。

我尝试通过转换 JSON 在数据表中使用,但没有成功。我不确定如何在数据表上显示这些数据。

这个dataArray是在app内部更新的,不是外部数据。

你能帮帮我吗?

【问题讨论】:

  • 您可以阅读有关如何在 jquery 数据表中显示嵌套 JSON 数据的参考资料:infra.clarin.eu/content/libs/DataTables-1.10.6/examples/ajax/… 在 javascript 代码中注意您应该将 ajax 属性替换为您的 dataArray 对象。
  • 请查看我的解决方案。如果它回答了您的问题,请您将其标记为已接受。

标签: javascript jquery json datatable


【解决方案1】:

据我所知,您需要将 JSON 属性及其对应的值更改为字符串。如果您需要对整数进行任何算术运算,您总是可以parseInt()。然后在您的DataTable() 调用中指定datacolumns 属性,如下所示:

var dataArray = [{
    "id": "1",
    "props": {
        "abc": "123",
        "def": "456",
        "ghi": "789"
    },
    "features": {
        "zxc": "01",
        "cvb": "02",
        "nmn": "03"
    }
},
{
    "id": "2",
    "props": {
        "abc": "002",
        "def": "258",
        "ghi": "965"
    },
    "features": {
        "zxc": "52",
        "cvb": "21",
        "nmn": "75"
    }
},
{
    "id": "3",
    "props": {
        "abc": "352",
        "def": "365",
        "ghi": "778"
    },
    "features": {
        "zxc": "21",
        "cvb": "45",
        "nmn": "03"
    }
},
]

$(document).ready(function() {
    $('#example').DataTable( {
        data: dataArray,
        "columns": [
            { data: "id" },
            { data: "props.abc" },
            { data: "features.zxc" },
        ]
    } );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.19/js/jquery.dataTables.min.js"></script>
<link href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" rel="stylesheet"/>

<table id="example" class="display" style="width:100%">
    <thead>
        <tr>
            <th>ID</th>
            <th>Props</th>
            <th>Features</th>
        </tr>
    </thead>
    <tfoot>
        <tr>
            <th>ID</th>
            <th>Props</th>
            <th>Features</th>
        </tr>
    </tfoot>
</table>

【讨论】:

  • 不错的解决方案兄弟!听起来像这个参考示例:infra.clarin.eu/content/libs/DataTables-1.10.6/examples/ajax/…
  • 我没看到。我阅读了文档和 api 参考。我对数据表插件没有太多经验,所以我今天学到了一两件事!在此之后,我刚刚通过使用插件的表格刷新和 ajax 回答了第二个问题。我同意更多的人应该阅读文档/参考,如果这是你在暗示的话。 stackoverflow.com/questions/51671793/…
  • 不,我没有任何不好的意思。我赞成您的回答。在我看来,这是一个很好的解决方案,就像我在评论中提到的参考一样。
  • @Oghli 哦,很酷,谢谢。是的,当您查看一些参考资料时,这非常简单
  • @CanerSezgin 没问题!请记住,您可能会遇到带有前导零的值的问题。如果您将它们转换为整数,您将需要找到一个解决方案来填充这些值。不过作为字符串,它们很好。
猜你喜欢
  • 2014-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-23
  • 2021-04-22
  • 1970-01-01
  • 2021-06-19
  • 2020-01-30
相关资源
最近更新 更多