Подтвердить что ты не робот

Вызов функции при успешном вызове ajax datatable

Можно ли вызвать функцию 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
}

вместо "success": fnCallback ------ > , которая является последней строкой вызова AJAX. В этой функции я хотел бы проверить отправку значения со стороны сервера. Заранее спасибо за любую помощь....

4b9b3361

Ответ 1

Вы можете использовать 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" }

        ]
    } );

Ответ 2

Лучший способ, который я нашел, - использовать метод 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
        }
    });

Ответ 3

Вы можете использовать это:

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

Ответ 4

Для данных 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

Параметр успеха ajax не должен изменяться, поскольку DataTables использует его внутри для выполнения рисования таблицы, когда загрузка данных завершена. В рекомендации используется "dataSrc" для изменения полученных данных.

Ответ 6

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

Ответ 7

Может быть, это не совсем то, что вы хотите сделать, но использование ajax complete решило мою проблему сокрытия счетчика при возврате вызова ajax.

Так это будет выглядеть примерно так

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

Ответ 8

Основываясь на документации, событие xhr Ajax сработает, когда запрос Ajax будет выполнен. Таким образом, вы можете сделать что-то вроде этого:

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

Ответ 9

Попробуйте выполнить следующий код.

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