jQuery数据表添加动态列 要求:绘制一个带有JSON对象的datatable,JSON对象由 网络服务。 约束:列数未知。
我的实现如下所示,但我不确定从ajax请求接收JSON后在何处/如何定义列jQuery数据表添加动态列 要求:绘制一个带有JSON对象的datatable,JSON对象由 网络服务。 约束:列数未知。,jquery,ajax,datatables,datatables-1.10,Jquery,Ajax,Datatables,Datatables 1.10,我的实现如下所示,但我不确定从ajax请求接收JSON后在何处/如何定义列 $("#reportTable").DataTable({ "ajax": { "url": "/path/that/returns/json", "type": "POST", "data": { "formatType": "json", "dispatchType": "api" , "csrfmiddlewaretoken" : "{{ csrf_token
$("#reportTable").DataTable({
"ajax": {
"url": "/path/that/returns/json",
"type": "POST",
"data": { "formatType": "json", "dispatchType": "api" , "csrfmiddlewaretoken" : "{{ csrf_token }}"},
"dataSrc": function ( json ) {
console.log(json); //can i set my column definition here?
},
},
"columns":["Do i need to even add this?"],
"autoWidth": false,
"pageLength": 50
});
这是返回的JSON格式,请注意,属性可能会有所不同:
结果1:
[
{
"fname":"Bruce",
"lname":"Wayne",
"id":"BatMan"
},
{
"fname":"Steve",
"lname":"Rogers",
"id":"CptAmerica"
},
{
"fname":"Tony",
"lname":"Stark",
"id":"IronMan"
}
]
结果2:
[
{
"company":"Wayne Enterprices",
"owner":"Bruce Wayne"
},
{
"company":"Stark Industries",
"owner":"Tony Stark"
},
{
"company":"SpaceX",
"owner":"Elon Musk"
}
]
谢谢 以下是如何实现这一目标的完整示例:
This is a quick post about how to modify your JSON returned objects before sending them to the tables using DataTables.js.
In this example I am using a flat array for my JSON objects. For more uses for data sources in AJAX visit http://www.datatables.net/examples/ajax/
The Code
$('#example_table').DataTable({
//'deferRender': false,
'ajax' : {
"type" : "POST",
"url" : http://yourURLhere.com/path/to/your/script,
"dataSrc": function (json) {
var return_data = new Array();
for(var i=0;i< json.length; i++){
return_data.push({
'title': json[i].title,
'url' : '<img src="' + json[i].url + '">',
'date' : json[i].date
})
}
return return_data;
}
},
"columns" : [
{'data': 'url'},
{'data': 'title'},
{'data': 'date'}
]
});
So the dataSrc property can have a function passed to it. The dataSrc property contains the returned information given from your post request. Now, since we are using a flat array like this:
[
{
title : 'example_title',
url : 'example_url',
date : 'example_date'
},
{
title : 'example_title2',
url : 'example_url2',
date : 'example_date2'
},... and so on...
]
/**
*获取随机数据集
* */
常量getData==>{
让数据=[
[
{
名字:布鲁斯,
名字:韦恩,
id:蝙蝠侠
},
{
fname:Steve,
名字:罗杰斯,
id:CptAmerica
},
{
姓名:托尼,
名字:斯塔克,
铁人
}
],[
{
公司名称:韦恩·恩特普莱斯,
所有者:布鲁斯·韦恩
},
{
公司:斯塔克工业公司,
所有者:托尼·斯塔克
},
{
公司名称:SpaceX,
所有者:伊隆·马斯克
}
]
];
让index=Math.roundMath.random;//1或0
返回数据[索引];
}
/**
*此函数用作ajax调用
*/
常量getAjaxData==>{
返回新的PromiseSolve,拒绝=>{
让data=getData;
返回数据;
}
}
const buildHeader=数据=>{
设firstRow=data[0]| |[],
keys=Object.keysfirstRow;
return keys.mapkey=>{
数据:关键,
姓名:key
}
}
/**
*使用数据初始化datatable
**/
const buildDataTable=列,data=>{
console.log{columns,data};
$sample-table.DataTable{
数据:数据,
列:列,
页长:100,
处理:对,
};
}
//主要
$window.ready=>{
//模拟ajax调用
getAjaxData.thendata=>{
让columns=buildHeaderdata;
buildDataTablecolumns、data;
}.catcherr=>{
console.Log无法获取数据,错误;
}
}
文件
谢谢,但正如我所说,在ajax响应到来之前,我不会知道JSON属性。因此,我无法定义与您的答案类似的列。我已修改了答案。请看一看谢谢,Brajesh,但我不知道响应中发送的每个JSON的长度。我更新了这个问题,以强调每次发出ajax请求时,响应都会改变。如果需要进一步说明,请告诉我。嘿@vignz.pie,你解决了这个问题吗?我面临着同样的问题,并试图在几个小时内找到解决方案。。。
$.ajax({
url: 'userController?action=list',
success : function(data, textStatus, jqXHR) {
var table_data = JSON.parse(data);
var table = $('#usermaintenancetable').DataTable( {
data: table_data
});
}
});
So here the response is in String format and I have change it to JSON using JSON.parse() then passed this as data to data table.