it-swarm.com.de

rufen Sie eine Funktion zum Erfolg des datablen Ajax-Aufrufs auf

Ist es möglich, eine Javascript-Funktion als Erfolg des datierbaren Ajax-Aufrufs aufzurufen. Hier ist der Code, der versucht zu verwenden,

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

ist es möglich etwas zu haben,

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

anstelle von "success": fnCallback ------> was die letzte Zeile des AJAX - Aufrufs ist . In dieser Funktion möchte ich einen Wert prüfen, der von Server-Seite gesendet wird für jede hilfe ....

22
rajan.tsm

Sie können dataSrc verwenden:

Hier ist ein typisches Beispiel für 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" }

        ]
    } );
36
Joseph Garrone

Die beste Methode, die ich gefunden habe, ist die Verwendung der initComplete -Methode, die nach dem Abrufen der Daten ausgelöst wird und die Tabelle rendert. NOTE dies wird jedoch nur einmal ausgelöst.

$("#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
        }
    });
21
Chris

Sie können dies verwenden:

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

Für Datentabellen 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.
      }
    });
  }
});
5
Khalid

Die Erfolgsoption von ajax sollte nicht geändert werden, da DataTables sie intern verwendet, um die Tabellenzeichnung auszuführen, wenn das Laden der Daten abgeschlossen ist. Die Empfehlung wird "dataSrc" verwendet, um die empfangenen Daten zu ändern.

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

Basierend auf the docs würde das Ajax-Ereignis xhr ausgelöst, wenn eine Ajax-Anforderung abgeschlossen ist. Sie können also so etwas tun:

let data_table = $('#example-table').dataTable({
        ajax: "data.json"
    });

data_table.on('xhr.dt', function ( e, settings, json, xhr ) {
        // Do some staff here...
        $('#status').html( json.status );
    } )

1
ako

Vielleicht ist es nicht genau das, was Sie tun möchten, aber mit dem Ajax Complete wurde mein Problem gelöst, einen Spinner zu verbergen, wenn der Ajax-Anruf zurückkehrte.

So würde es ungefähr so ​​aussehen

var table = $('#example').DataTable( {
    "ajax": {
            "type" : "GET",
            "url" : "ajax.php",
            "dataSrc": "",
            "success": function () {
                alert("Done!");
            }       
    },
    "columns": [
            { "data": "name" },
            { "data": "position" },
            { "data": "office" },
            { "data": "extn" },
            { "data": "start_date" },
            { "data": "salary" }            
        ]
    } );
0
Jonny

Versuchen Sie den folgenden Code.

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