数据表未显示响应

我试图使用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 ''+data+''; }, "targets": 6 }, ] 

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

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" } ] }) 

多数民众赞成 – > http://jsfiddle.net/wnoemmte/

你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格式。 有关更多详细信息,请参阅Datatables Data文档 。

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

 "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' }, ], 

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