我正在尝试使用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
渲染它但是也失败了。
答案 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' },
],
或者您要显示的任何数据列。