使用jquery的Datatables插件动态设置表标题 – 从数据对象中获取标题

我正在寻找一种动态设置表格标题的方法。 有一个执行数据库查询的搜索表单,每次根据用户选择获取不同的数据集。

现在标题在html中是硬编码的。

这是我设置表格的方式:

agentId confirmTime name amount currency amountUSD
agentId confirmTime name amount currency amountUSD

JavaScript的:

 Api.getDeposits(formData).then(function(res){ $('#searchResults').dataTable( { "data": res, "scrollX": "100%", "columns": [ { "data": "agentId" }, { "data": "confirmTime" }, { "data": "name" }, { "data": "amount" }, { "data": "currency" }, { "data": "amountUSD" } ] }); }); 

样本数据:

 [{ "agentId": 70, "amount": 250, "amountUSD": 250, "confirmTime": "2015-04-28 10:49:00", "currency": "USD", "email": "name@mail.ru", "name": "some name", "paymentMethod": "Credit Card", "status": "approved" }] 

根据我从服务器获得的数据,我想设置tfoot,thead,所以我在很多情况下只有一个模板

好。 你的问题没有完全意义。 如果你可以硬编码列,为什么你不能硬编码标题? 我的意思是,如果email字段是静态的,那么标题email也是静态的?

无论如何,我认为你想要两者 – 一个模板,你可以传递任何数量的字段和标题/字段名称的JSON。 以下模板执行此操作:

 

脚本:

 $.getJSON('url/to/json/data', function(json) { var keys = Object.keys(json['data'][0]), columns = []; for (var i=0;i 

这将使任何 JSON在{ 'data' : [...] }forms上具有任意数量的字段,并将其作为dataTable,其字段名称为title,字段对象为data。

如果您的JSON在表单上

 { "agents": [ { "agentId": 70, ... }, ... ] 

然后只需将data引用重命名为agents ;

 $.getJSON('url/to/json/data', function(json) { var keys = Object.keys(json['agents'][0]), columns = []; for (var i=0;i 

如果您的JSON是普通数组[{ ... }, { ... }]那么完全跳过data引用:

 $.getJSON('url/to/json/data', function(json) { var keys = Object.keys(json[0]), columns = []; for (var i=0;i