【问题标题】:JSON array Tabulator js tableJSON数组Tabulator js表
【发布时间】:2017-11-21 18:44:11
【问题描述】:

我的HTML 文件中有一个Tabulator 数据表。看起来像这样:

<div class="example-table">/div>

我有一个JavaScript 文件,它会通过调用一个返回JSON 的r​​est API 来用数据填充我的表。

这就是我的JS 文件的样子:

$(document).ready(function() {

    $(".example-table").tabulator({
        columns : [ {
            title : "ID",
            field : "myjson.firstname",
            width : 250
        }, {
            title : "Pred",
            field : "myjson.pred",
            sorter : "number",
            align : "left",
            formatter : "progress",
            width : 200
        }, ],
    });

    var tabledata = [];

    $.getJSON('http://127.0.0.1:7001/MySerices/service/rest', function(json) {
        tabledata.append(json);
    });

    $(".example-table").tabulator("setData", tabledata);

});

REST 服务返回的JSON 如下所示:

{"myjson":
[{"firstname":"Piter","pred":"0,616540492"},
{"firstname":"Piter","pred":"0,616540492"}
]}

Tabulator 表出现,但没有任何数据。如果我检查我的 JS 日志,我可以看到请求已完成且没有任何错误,并且我可以在响应中看到 JSON。

你能帮我怎么做吗?

谢谢!

【问题讨论】:

标签: javascript jquery json tabulator


【解决方案1】:

您的代码中有三个主要错误。

首先,你的JSON响应,响应应该如制表符jsdocumentation所示:

//An array of objects not wrapped in an object
[
   {"firstname":"Piter","pred":"0,616540492"},
   {"firstname":"Parker","pred":"0,42325456"}
]

第二,columns字段要匹配每一行:

$(".example-table").tabulator({
    columns : [ {
        title : "ID",
        field : "firstname",//changed here
        width : 250
    }, {
        title : "Pred",
        field : "pred",//and here
        sorter : "number",
        align : "left",
        formatter : "progress",
        width : 200
    }, ],
});

第三getJSON是异步的,所以只有response到达时才需要获取和设置数据:

$.getJSON('http://127.0.0.1:7001/MySerices/service/rest', function(response) {
    //response is already a parsed JSON
    $(".example-table").tabulator("setData", response);

});

PS:数组没有append方法,你可以使用unshiftpusharray前面添加或追加数据。

【讨论】:

  • 非常感谢!我也修改了我的服务器端 REST 响应,但是您的解决方案解决了我的问题!谢谢!
  • @solarenqu 没问题
  • 再问一个问题,您认为可以逐行加载表格吗? :)
  • @solarenqu 喜欢一一有延迟吗?
  • @Lucas,您可以将 URL 直接传递给 setData 函数,它会为您发出 ajax 请求
猜你喜欢
  • 1970-01-01
  • 2019-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多