数据表未显示响应
我试图使用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' }, ],
或者您要显示的任何数据列。