Javascript 如何选择要在jQuery数据表中显示的列?

Javascript 如何选择要在jQuery数据表中显示的列?,javascript,jquery,json,datatables,Javascript,Jquery,Json,Datatables,从服务器返回的JSON(用于填充)如下所示: [ { "id":1, "attributeType":{ "id":1, "name":"test1", "tag":"test-type", "is-dog":false }, "attributeValue":{ "id":null, "name":"blah", "

从服务器返回的JSON(用于填充)如下所示:

[
   {
      "id":1,
      "attributeType":{
         "id":1,
         "name":"test1",
         "tag":"test-type",
         "is-dog":false
      },
      "attributeValue":{
         "id":null,
         "name":"blah",
         "tag":"BLAH"
      },
      "buzz":1,
      "fizz":"53abc"
   }
]
但是,我只想显示以下字段:

  • id
  • attributeValue.name
  • buzz
此外,我希望它们按以下顺序(从左到右)显示:

  • buzz
  • attributeValue.name
  • id

如何配置dataTable以仅选择这三个字段并按所需顺序显示它们?提前谢谢

要实现这一点,您可以动态构建表,然后将其发送到datatable

在下面的示例中,我假设Json在jQuery Ajax调用中返回,并且您的响应中有多个项:

$.ajax({
    type: "POST",
    url: "Controller Url",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
...
...
success: function (response) {

// Assuming you need to parse, you may not need to depending on how the data is returned.
var parsedJson = $.parseJSON(response); 
// Empty var to hold the table content.
var buildTable = "";

$.each(parsedJson, function(i)) {
    buildTable += "<tr>";
    buildTable += "<td>" + parsedJson[i].buzz + "</td>";
    buildTable += "<td>" + parsedJson[i].attributeValue.name + "</td>";
    buildTable += "<td>" + parsedJson[i].id + "</td>";
    buildTable += "</tr>";
});

// Now fill your datatable with the table content in the order you want and with only the fields required.
$("#datatableContent").append(buildTable);

// Configure your datatable
$('#datatableContent').dataTable({ });

} //end success

});// end ajax
$.ajax({
类型:“POST”,
url:“控制器url”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
...
...
成功:功能(响应){
//假设您需要解析,根据数据的返回方式,您可能不需要解析。
var parsedJson=$.parseJSON(响应);
//空var以保存表内容。
var buildTable=“”;
$.each(parsedJson,函数(i)){
buildTable+=“”;
buildTable+=''+parsedJson[i].buzz+'';
buildTable+=“”+parsedJson[i]。attributeValue.name+“”;
buildTable+=“”+parsedJson[i].id+“”;
buildTable+=“”;
});
//现在,按照所需的顺序用表内容填充datatable,并且只填充所需的字段。
$(“#datatableContent”).append(buildTable);
//配置数据表
$('#datatableContent').dataTable({});
}//最终成功
});// 结束ajax
在你看来,你应该:

<table id="datatableContent">
<thead>
    <tr>
        <th>Buzz</th>
        <th>Name</th>
        <th>ID</th>
    </tr>
</thead>
<tbody>
</tbody>

嗡嗡声
名称
身份证件


需要记住的一点是,如果我放置
$('#datatableContent').dataTable({}),我会遇到问题配置部分,随着ajax调用的成功。我在
$(“#datatableContent”).append(buildTable)之后放置了地雷行,每次都非常成功。

谢谢@KDee(+1)-如果我不理解您的意思,请原谅,但我没有看到dataTable(即,
$(“#datatableContent”).dataTable()
在代码片段中的任何位置。看起来您正在使用jQuery
$.ajax()构建HTML表
call,但不是with。如果是这种情况,我需要弄清楚如何使用数据表,而不仅仅是jQuery。如果我误解了您的意思,请您更新代码以显示数据表的使用位置/方式好吗?再次感谢您的回答!@pnongrata我在代码中输入了数据表部分,因为它将基于您的设置正如我在上面提到的,当您配置datatable时,您将在.append行之后执行此操作。因此,您将有如下内容:$(“#datatableContent”).append(buildTable);$('#datatableContent).datatable({“aLengthMenu”:[5,10,25,50,75],“bSort”:true,……other settings});我以这种方式使用数据表。动态数据将附加到表中。