Javascript Jquery datatables不显示列标题

Javascript Jquery datatables不显示列标题,javascript,jquery,ajax,datatable,Javascript,Jquery,Ajax,Datatable,这与问题有关。然而,我的情况有点不同。我想实现与另一个问题相同的datatables示例,即。正如您所看到的,您必须传递列名才能像下面这样初始化表标题 "columns": [ { "data": "name" }, { "data": "position" }, { "data": "office" }, { "data": "extn" }, { "data": "start_date" },

这与问题有关。然而,我的情况有点不同。我想实现与另一个问题相同的datatables示例,即。正如您所看到的,您必须传递列名才能像下面这样初始化表标题

 "columns": [
        { "data": "name" },
        { "data": "position" },
        { "data": "office" },
        { "data": "extn" },
        { "data": "start_date" },
        { "data": "salary" }
    ]
问题是我事先不知道标题名称,因为它们会改变。当我使用第三个变量从ajax获取数据时,我尝试过初始化列名,如下所示(请参阅其中的“注意这行”,但这不起作用)

            //PAY ATTENTION TO THIS LINE
            var columnsHeaders = [];


      var ab = $('#dynamicScenarioTable').DataTable({
              "bDestroy": true,
              "dom": 'T<"clear">lfrtip',
              "ajax": {
                    "type": "POST",
                    "url": "dynamicScenario.htm",
                    "data": tags,
                    "dataType": "json",
                    "dataSrc": function(json){
                          //PAY ATTENTION TO THIS LINE
                          columnsHeaders.push({"data": json.header });
                          return json.vals;
                    },
                    "error": function(exception)
                    {
                       displayMessageOnError();
                    }
               },  
                //PAY ATTENTION TO THIS LINE
               "columns":  [columnsHeaders],

               tableTools: tableDefaultS.tableTools
      });
//注意这一行
var columnsHeaders=[];
var ab=$(“#dynamicScenarioTable”).DataTable({
是的,
“dom”:“Tlfrtip”,
“ajax”:{
“类型”:“职位”,
“url”:“dynamicScenario.htm”,
“数据”:标签,
“数据类型”:“json”,
“dataSrc”:函数(json){
//注意这条线
push({“data”:json.header});
返回json.vals;
},
“错误”:功能(异常)
{
displayMessageOnError();
}
},  
//注意这条线
“专栏”:[专栏作者],
tableTools:tableDefaultS.tableTools
});

有什么想法吗?

您可以将数据源属性添加到构建在表头上的TH标记中。然后,您可以让jQuery读取这些标记并构造数组以发送到DataTable构造函数中

<tr>
    <th data-source="name">Name</th>
    <th data-source="position">Postion</th>
    <th data-source="start_date">Start Date</th>
</tr>

您可以将数据源属性添加到构建在表头上的TH标记中。然后,您可以让jQuery读取这些标记并构造数组以发送到DataTable构造函数中

<tr>
    <th data-source="name">Name</th>
    <th data-source="position">Postion</th>
    <th data-source="start_date">Start Date</th>
</tr>


为什么您不知道这些数据?它要么是一个动态输入,来自某种形式,要么是AJAX请求的一部分。您应该能够获取标题。因为列字段的数量以及它们的名称都会发生变化。不过,我可以在json文件中循环查找它们的数量,正如我在上面的示例中所演示的那样。但是,我确实知道我不知道如何将它分配给列字段如果标题在更改,那么数据也会更改。为什么不重新创建表?这是否意味着我必须通过附加tr和tds动态构建表,然后调用datatables?不一定,可能还有另一种方法。只是给你其他选项。你为什么不知道数据?它要么是一个动态输入,来自某种形式,要么是AJAX请求的一部分。您应该能够获取标题。因为列字段的数量以及它们的名称将发生变化。我可以在json文件中循环查找它们的数量,正如我在上面的示例中所演示的那样。但是,我不知道如何找到它们如果标题在更改,那么数据也在更改。为什么不重新创建表?这是否意味着我必须通过附加tr和tds动态构建表,然后调用datatables?不一定,可能还有另一种方法。只是给你其他选项。我不能这样做,因为我不知道nei预先设置好名称和列数。那么,为表构建列标题是什么呢?我可以知道ajax响应中的标题。您的代码与我上面粘贴的代码类似。我可以在ajax中将标题推送到数组中,但无法将此数组分配给datatables“columns”设置是出于某种原因。可能是因为它的asynchYou示例只是试图告诉DataTables列的绑定是什么。它并没有创建头列。我实际上只是查看了,看起来您可以使用DataTables将自动读取的html5属性数据类名,这将否定我上面的整个示例。在从ajax调用更新数组之前,您发送到DataTables构造函数中的对象已经绑定。它只看到空数组,并且会产生js错误。在我的ajax请求之前,我既不知道头名称,也不知道它们的计数。我只能在e I构建表的th将为时已晚,因为我应该已经为“列”分配了一些值datatables的特性。如果我想遵循您的方法,我需要先用ajax获取数据,然后构造表,这与使用nuking控件创建表和重新创建表是一样的,但我的目的是在与上面相同的ajax调用中构建表。我不能这样做,因为我事先既不知道名称也不知道列数。因此at正在为表构建列标题?我可以知道ajax响应中的标题。您的代码与我上面粘贴的代码类似。我可以将标题推送到ajax中的数组中,但无法将此数组分配给datatables“columns”设置是出于某种原因。可能是因为它的asynchYou示例只是试图告诉DataTables列的绑定是什么。它并没有创建头列。我实际上只是查看了,看起来您可以使用DataTables将自动读取的html5属性数据类名,这将否定我上面的整个示例。在从ajax调用更新数组之前,您发送到DataTables构造函数中的对象已经绑定。它只看到空数组,并且会产生js错误。在我的ajax请求之前,我既不知道头名称,也不知道它们的计数。我只能在构建表的th已经太晚了,因为我应该已经为datatables的“column”特性分配了一些值