2017-04-18 82 views
1

我已经使用server-side processing data table使用datatable ajax响应数据设置自定义标签值

这里是我的数据表的配置:

var table = $("#job-table").DataTable({ 
    "ajax": { 
     "url": "<?php echo url('/getJobs');?>", 
     "type": "POST", 
     "data": function (d) { 
      d.connection = connectionArray, 
      d.company = companyArray, 
      d.type = typeArray 
     } 
    }, 
    "processing": true, 
    "serverSide": true, 
    "columns": [ 
     { "data": "id" }, 
     { "data": "job_id" }, 
     { "data": "type" }, 
     { "data": "connection_id" }, 
     { "data": "company_id" }, 
     { "data": "message" }, 
     { "data": "total_completion_time" }, 
     { "data": "date" }, 
     { "data": "start_time" }, 
     { "data": "end_time" }, 
     { "data": "error_time" } 
    ], 
    "info":  false, 
    "searching": false, 
    "bLengthChange": false 
}); 

在我已经通过了其中一些我要去使用设置自定义标签值的另一个数据这个数据表Ajax响应。

现在,我使用相同的ajax调用来设置标签值。有两个调用是数据表和另一个调用标签的调用。两次我打电话给同一个API。但想知道如何避免第二次Ajax呼叫? 有没有什么方法可以使用数据表ajax调用响应来设置自定义标签值?

+0

“*一些其他数据*”有点含糊。 'dataSrc:function(json){$('#label')。html(json.someAnotherData);返回json}'也许可以给你一个提示......? – davidkonrad

+0

不行不行! :( 我返回一个参数在数据表的响应,即“avg_number_of_completion”在“数据”水平 像 - 我已经使用列内的数据我想用avg_number_of_completion设置标签 – Progi1990

回答

0

我做了类似的事情。我使用dataFilter回调来处理它。

所以给定的HTML:

<input id="txtOne"/> 
    <input id="txtTwo"/> 
    <table id="job-table" class="display"></table> 

Serverside集团代码返回一个JSON序列化对象,看起来像:

{ ValueOne: "some data", 
    ValueTwo: "Some more data", 
    data: [array of data for the table] } 

我的表定义看起来像(注意dataFilter部分):

var table = $("#job-table").DataTable({ 
    "ajax": { 
     "url": "<?php echo url('/getJobs');?>", 
     "type": "POST", 
     "data": function (d) { 
      d.connection = connectionArray, 
      d.company = companyArray, 
      d.type = typeArray 
     }, 
     // I added this section. It is called before the success callback 
     // You will have to figure out your parsing at this point because 
     // each configuration is different so I just put how mine is. 

     dataFilter: function(response){ 
      var temp = JSON.parse(response); 
      $("#txtOne").val(temp.ValueOne); 
      $("#txtTwo").val(temp.ValueTwo); 


      return response; 

     } 
    }, 
    "processing": true, 
    "serverSide": true, 
    "columns": [ 
     { "data": "id" }, 
     { "data": "job_id" }, 
     { "data": "type" }, 
     { "data": "connection_id" }, 
     { "data": "company_id" }, 
     { "data": "message" }, 
     { "data": "total_completion_time" }, 
     { "data": "date" }, 
     { "data": "start_time" }, 
     { "data": "end_time" }, 
     { "data": "error_time" } 
    ], 
    "info": false, 
    "searching": false, 
    "bLengthChange": false 
});