Datatables处理json响应多个对象

时间:2014-01-14 23:50:55

标签: json datatables jquery-datatables

我使用Datatables Jquery插件做了一些工作,但我还没能理解如何处理从服务器获取的Json响应。 我收到了这个回复:

    "aaData":[
[
 {
  "idTreatment":23,
  "treatment":"Hospitalización",
  "directions":"Directions",
  "active":"1"
 },
 {
  "idCIE10":1,
  "cieCode":"A00",
  "diagnostic":"COLERA",
  "description":null,
  "lastUsed":1386649580000,
  "active":1
 }
],
[
 {
  "idTreatment":27,
  "treatment":"Antibiótico",
  "directions":null,
  "active":"1"
 },
 {
  "idCIE10":1,
  "cieCode":"A00",
  "diagnostic":"COLERA",
  "description":null,
  "lastUsed":1386649580000,
  "active":1
 }
],
[
 {
  "idTreatment":33,
  "treatment":"Hidratación Oral",
  "directions":"Directions",
  "active":"1"
 },
 {
  "idCIE10":1,
  "cieCode":"A00",
  "diagnostic":"COLERA",
  "description":null,
  "lastUsed":1386649580000,
  "active":1
 }
]
]
}

我一直在尝试使用mData或mRender,但是我还没有熟悉数据表,所以如果有人能帮我,怎么能在html的表格中打印出来我真的很感激

提前致谢

这个javascript fucntion是我用来初始化表的那个,我试图使用基于例子的aoColumns但我不确定这是否是最好的选择;也基于示例我使用mData,只显示2列进行测试,因为你可以看到我试图使用对象字段名称访问“数组”或json响应,但是当页面呈现时会发出警告,说明它找不到这个领域。

function initializeTreatmentsTable(id){
        treatmentsTable = $('#treatmentsTable').dataTable( {
                "bSort":false,
                "sAjaxSource":"./diagnosticTreatment",
                "fnServerParams": function ( aoData ) { aoData.push( {name:"diagnosticId",value:id} ); },
                "aoColumns": [
                             { "mData": "idTreatment" },
                             { "mData": "treatment" }
                             ]
    });

1 个答案:

答案 0 :(得分:0)

在官方网站datatables.net上多次查看API后,我得出结论,我必须测试一下。 如果我的问题不明确,我会再解释一下。

我有一个表,该表的数据是通过ajax请求和json响应获得的,json响应是一个对象数组,但对象本身至少由两个对象组成({[[object1] [object2] ]],[[object1] [object2]]})所以用mData访问它们至少对我来说是不可能的,而且解决方案非常简单,我想我从未尝试过,我只需要使用mRender和函数。

function initializeTreatmentsTable(id){
        treatmentsTable = $('#treatmentsTable').dataTable( {
                "bSort":false,
                "sAjaxSource":"./diagnosticTreatment",
                "fnServerParams": function ( aoData ) { aoData.push( {name:"diagnosticId",value:id} ); },
                "aoColumns": [
                             {   "bVisible": false,
                                 "mRender": function(data,type,full){
                                    return data.idTreatment;}
                             },
                             { "mRender": function(data,type,full){
                                     return full[0].treatment;
                             } }
                             ]
    });

上面的函数首次使用初始化表,我得到的问题是我只需要第一个对象的2个字段而第二个没有,但我现在不知道怎么做,所以我使用了包含整个json响应的“full”参数,并加入了它。

这可能不是最好的答案,但它为我做了工作,所以我希望如果有人知道如何改进它,随意做,或者只是评论,我也希望这可以帮助别人