2013-04-03 13 views
12

Jest to możliwe, aby wywołać funkcję javascript w pomyślnym wywołania ajax ajax. Oto kod próbuję użyć,Wywołanie funkcji w sukcesie wywołania ajax datatable

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

to możliwe, aby mieć coś,

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

zamiast "sukces": fnCallback ------> co jest ostatnia linia wywołania AJAX. W tej funkcji chciałbym sprawdzić wartość wysyłaną od strony serwera. Dzięki z góry za wszelką pomoc ....

+0

Jest to możliwe. Czy już próbowałeś? –

+0

Przekazujesz argument do 'FnServerData' jako wywołanie zwrotne do' $ .ajax'. Czego chcesz użyć? –

+0

Dzięki za odpowiedź Dvorak. funkcja fnCallback() { \t \t alert ("fnCallback"); \t} Próbuję wywołać tę metodę. Tak przekazuję wywołanie zwrotne jako argument do FnserverData. Jeśli nie zostanie przekazany do FnServerData, będzie kontynuował przetwarzanie bez zgłaszania błędu. –

Odpowiedz

18

Można użyć datasrc:

Oto typowy przykład 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

Można to wykorzystać:

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

Idealnie tutaj przy użyciu DataTables 1.10.10, Jquery 2.1.1. – aspadacio

+0

Wielkie dzięki @AnasSafi Miałem z tym problemy od wczoraj. Próbowałem wywołać dodatkowe javascripts na polach wejściowych w wierszach dla celów obliczeń i użyłem '" initComplete "' ale to nie zadziałało, ale '" drawCallback "' uratował mój dzień. –

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

Dla elementów danych 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

Najlepszym sposobem znalazłem jest użycie metody initComplete jak pożary po dane zostały pobrane i renderuje tabeli. UWAGA to jednak strzela tylko raz.

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

Tak, działało, musiałem aplikować datakera na datakable w polu tekstowym, więc muszę dodać to po tym, jak wszystkie wiersze są renderowane na stronie, – Dragon

+0

Z wyjątkiem tego, że odświeżasz tabelę, initComplete nigdy nie jest wywoływany ponownie, ponieważ był już zainicjowany. – LarryBud

0

Spróbuj użyć następującego kodu.

 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"); }); 
      } 
Powiązane problemy