没有显示回复的数据表

时间:2018-02-08 10:45:39

标签: jquery ajax datatables

我正在尝试使用AJAX Datatables从api获取数据,数据被成功检索并显示在网络选项卡中,但它不会在DataTable中呈现

这是我的AJAX电话

"ajax": {
            "url": "https://api.tidex.com/api/3/info",
            "type":'POST',
            "dataSrc": "pairs",
    },
    columns: [
         { data: 'pairs' },
         { data: 'server_time' },
         { data: 'server_time' },
         { data: 'server_time' },
         { data: 'server_time' },
         { data: 'server_time' },
    ],
    columnDefs: [
       {
           "render": function (data, type, row) {
                return '<a href="">'+data+'</a>';

           }, "targets": 6
       },
    ]

我尝试以正常方式呈现它但是我失败了,然后我尝试使用columnDefs渲染它但是也失败了。

2 个答案:

答案 0 :(得分:2)

API响应是一个对象集合或字典,它不能为DataTables解析。这是有道理的,因为您希望表数据按索引排序,而不是"doge_btc"等名称。

因此,您必须将响应转换为对象数组。幸运的是,这很容易,您可以在dataSrc回调中执行此操作:

var table = $('#example').DataTable({
   ajax: {
     url: "https://api.tidex.com/api/3/info",
     dataSrc: function(d) {
      var data = [];
      for (var item in d.pairs) {
         data.push(d.pairs[item])
      }
      return data
     }
   },
   columns: [
    { data: "decimal_places", title: "decimal_places" },
    { data: "min_price", title: "min_price" },
    { data: "max_price", title: "max_price" },
    { data: "min_amount", title: "min_amount" },
    { data: "max_amount", title: "max_amount" },
    { data: "min_total", title: "min_total" },
    { data: "hidden", title: "hidden" },
    { data: "fee", title: "fee" }
   ]
})  

多数民众赞成 - &gt;的 http://jsfiddle.net/wnoemmte/

答案 1 :(得分:0)

You JSON看起来像这样:

{
    "server_time": 1518103107,
    "pairs": {
        "ltc_btc": {
            "decimal_places": 8,
            "min_price": 0.00000001,
            "max_price": 3.0,
            "min_amount": 0.001,
            "max_amount": 1000000.0,
            "min_total": 0.0001,
            "hidden": 0,
            "fee": 0.1
        },
        "eth_btc": {
            "decimal_places": 8,
            "min_price": 0.00000001,
            "max_price": 3.0,
            "min_amount": 0.001,
            "max_amount": 1000000.0,
            "min_total": 0.0001,
            "hidden": 0,
            "fee": 0.1
        },
        .......
        "bins_eth": {
            "decimal_places": 8,
            "min_price": 0.0000001,
            "max_price": 20.0,
            "min_amount": 0.001,
            "max_amount": 1000000.0,
            "min_total": 0.001,
            "hidden": 0,
            "fee": 0.1
        }
    }
}

虽然这是一种有效的JSON格式,但它不是有效的Datatables格式。有关详细信息,请参阅数据表Data docs

首先,它需要一个对象数组,并且每行对象都是一致的。你有这个:

"pairs": {
        "ltc_btc": {

然后这个:

        "eth_btc": {

据我所知,这不适用于Datatables。 “ltc_btc”是一个名字还是什么?对于Datatables来说,这样的结构会更好:

{
    "server_time": 1518103107,
    "pairs": [
        {
            "name": "ltc_btc",
            "decimal_places": 8,
            "min_price": 0.00000001,
            "max_price": 3.0,
            "min_amount": 0.001,
            "max_amount": 1000000.0,
            "min_total": 0.0001,
            "hidden": 0,
            "fee": 0.1
        },
            "name": "eth_btc",
            "decimal_places": 8,
            "min_price": 0.00000001,
            "max_price": 3.0,
            "min_amount": 0.001,
            "max_amount": 1000000.0,
            "min_total": 0.0001,
            "hidden": 0,
            "fee": 0.1
        },
        .......
            "name": "bins_eth",
            "decimal_places": 8,
            "min_price": 0.0000001,
            "max_price": 20.0,
            "min_amount": 0.001,
            "max_amount": 1000000.0,
            "min_total": 0.001,
            "hidden": 0,
            "fee": 0.1
        }
    ]
}

一组对象。然后,您可以像这样定义列:

columns: [
     { data: 'name' },
     { data: 'min_price' },
     { data: 'max_price' },
     { data: 'min_amount' },
     { data: 'max_amount' },
     { data: 'hidden' },
],

或者您要显示的任何数据列。