web-dev-qa-db-fra.com

appeler une fonction en cas de succès d'un appel ajax datatable

Est-il possible d'appeler une fonction javascript en cas de succès d'un appel ajax datatable . Voici le code que j'essaie d'utiliser,

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

est-il possible d'avoir quelque chose comme,

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

au lieu de "success": fnCallback ------> qui est la dernière ligne de l’appel AJAX call . Dans cette fonction, je voudrais vérifier une valeur envoyée du côté serveur . Merci d’avance pour toute aide ....

22
rajan.tsm

Vous pouvez utiliser dataSrc:

Voici un exemple typique de 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

Le meilleur moyen que j’ai trouvé est d’utiliser la méthode initComplete car elle se déclenche une fois les données extraites et restituées. NOTE cela ne se déclenche qu'une seule fois.

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

Vous pouvez utiliser ceci:

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

Pour les tables de données 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

L'option de réussite de ajax ne doit pas être modifiée car DataTables l'utilise en interne pour exécuter le tirage de table lorsque le chargement des données est terminé. La recommandation est utilisée "dataSrc" pour modifier les données reçues.

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

Peut-être que ce n’est pas exactement ce que vous voulez faire, mais utiliser ajax complete a résolu le problème de cacher une visière lorsque l’appel ajax est revenu.

Donc, cela ressemblerait à quelque chose comme ça

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

Essayez de suivre le 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");   });
            }