2013-04-03 72 views
12

是否可以在調用數據表ajax調用成功時調用javascript函數。 下面是代碼想使用,調用datatable ajax調用成功的函數

var oTable = $('#app-config').dataTable(
      { 
       "bAutoWidth": false,             
       "bDestroy":true, 
       "bProcessing" : true, 
       "bServerSide" : true, 
       "sPaginationType" : "full_numbers", 
       "sAjaxSource" : url,      
       "fnServerData" : function(sSource, aoData, fnCallback) { 
        alert("sSource"+ sSource); 
        alert("aoData"+ aoData); 
        $.ajax({ 
         "dataType" : 'json', 
         "type" : "GET", 
         "url" : sSource, 
         "data" : aoData, 
         "success" : fnCallback 
        }); 
       } 

是有可能有類似的東西,

success : function(){ 
    //.....code goes here 
} 

,而不是「成功」:fnCallback ------>這是最後一行的AJAX電話。 在這個函數中,我想檢查從服務器端發送的值。 在此先感謝您的幫助....

+0

這是可能的。你已經嘗試過了嗎? –

+0

您將'FnServerData'參數作爲回調函數傳遞給'$ .ajax'。你想用什麼來代替? –

+0

感謝您對Dvorak的迴應。 function fnCallback(){ \t \t alert(「fnCallback」); \t} 我嘗試調用此方法。所以我將回調作爲參數傳遞給FnserverData。如果未傳入FnServerData,它將繼續處理而不報告任何錯誤。 –

回答

18

您可以使用DATASRC:

這裏是datatables.net

var table = $('#example').DataTable({ 
    "ajax": { 
      "type" : "GET", 
      "url" : "ajax.php", 
      "dataSrc": function (json) { 
       //Make your callback here. 
       alert("Done!"); 
       return json.data; 
      }  
      }, 
    "columns": [ 
      { "data": "name" }, 
      { "data": "position" }, 
      { "data": "office" }, 
      { "data": "extn" }, 
      { "data": "start_date" }, 
      { "data": "salary" } 

     ] 
    }); 
9

一個典型的例子,您可以使用此:

"drawCallback": function(settings) { 
    console.log(settings.json); 
    //do whatever 
}, 
+0

完美的在這裏使用DataTable 1.10.10,Jquery 2.1.1。 – aspadacio

+0

非常感謝@AnasSafi從昨天起我一直在爲此而苦苦掙扎。我嘗試在行中的輸入字段上調用額外的javascript以用於計算目的,並使用'「initComplete」'但這不起作用,但''drawCallback''保存了我的一天。 –

2
"success" : function(data){ 
     //do stuff here 
     fnCallback(data); 
    } 
3

對於數據表1.10.12。

$('#table_id').dataTable({ 
    ajax: function (data, callback, settings) { 
    $.ajax({ 
     url: '/your/url', 
     type: 'POST', 
     data: data, 
     success:function(data){ 
     callback(data); 
     // Do whatever you want. 
     } 
    }); 
    } 
}); 
8

我發現,最好的方式是它激發的數據被檢索後並呈現表使用initComplete方法。 注意這隻會觸發一次。

$("#tableOfData").DataTable({ 
     "pageLength": 50, 
     "ajax":{ 
      url: someurl, 
      dataType : "json", 
      type: "post", 
      "data": {data to be sent} 
     }, 
     "initComplete":function(settings, json){ 
      console.log(json); 
      // call your function here 
     } 
    }); 
+0

是的工作,我需要在jQuery數據表中適用於文本框上的日期時間選擇器,所以我必須在頁面上呈現所有行後添加此, – Dragon

+0

除了刷新表,initComplete永遠不會再被調用,因爲它已經初始化。 – LarryBud

0

嘗試以下代碼。

 var oTable = $('#app-config').dataTable(
     { 
      "bAutoWidth": false,             
      "bDestroy":true, 
      "bProcessing" : true, 
      "bServerSide" : true, 
      "sPaginationType" : "full_numbers", 
      "sAjaxSource" : url,      
      "fnServerData" : function(sSource, aoData, fnCallback) { 
       alert("sSource"+ sSource); 
       alert("aoData"+ aoData); 
       $.ajax({ 
        "dataType" : 'json', 
        "type" : "GET", 
        "url" : sSource, 
        "data" : aoData, 
        "success" : fnCallback 
       }).success(function(){ alert("This Function will execute after data table loaded"); }); 
      }