2017-04-18 108 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 
});