2013-04-03 14 views
12

È possibile invocare una funzione javascript in caso di successo della chiamata ajax datatable. Ecco il codice sto cercando di usare,chiama una funzione in caso di successo della chiamata ajax databile

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 
        }); 
       } 

è possibile avere qualcosa di simile,

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

invece di "successo": fnCallback ------> che è ultima riga della chiamata AJAX. In questa funzione vorrei controllare un valore di invio dal lato server. Grazie in anticipo per qualsiasi aiuto ....

+0

È possibile. Hai già provato? –

+0

Si sta passando l'argomento a 'FnServerData' come richiamo a' $ .ajax'. Cosa vorresti usare invece? –

+0

Grazie per la tua risposta Dvorak. function fnCallback() { \t \t alert ("fnCallback"); \t} Provo a chiamare questo metodo. Quindi passo il callback come argomento in FnserverData. Se non viene passato in FnServerData, continua a essere elaborato senza riportare alcun errore. –

risposta

18

È possibile utilizzare DATASRC:

Ecco un tipico esempio di 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

È possibile utilizzare questo:

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

Perfetto qui utilizzando DataTables 1.10.10, Jquery 2.1.1. – aspadacio

+0

Grazie mille @AnasSafi stavo lottando con questo da ieri. Ho provato a chiamare javascript aggiuntivi su campi di input in righe per scopi di calcolo e ho usato "" initComplete "' ma questo non ha funzionato ma '' drawCallback "' mi ha salvato la giornata. –

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

Per i dati 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

Il modo migliore che ho trovato è quello di utilizzare il metodo initComplete come spara dopo che i dati è stato recuperato e rende il tavolo. NOTA questo si attiva solo una volta.

$("#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

sì che funzionava avevo bisogno di aplicare il selettore datetime su textbox in jquery datatable, quindi devo aggiungere questo dopo che tutte le righe sono state visualizzate sulla pagina, – Dragon

+0

Tranne se si aggiorna la tabella, initComplete non viene mai richiamato perché è già stato inizializzato. – LarryBud

0

Provare il seguente codice.

 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"); }); 
      } 
Problemi correlati