在datatable ajax调用中成功调用函数

时间:2013-04-03 11:50:37

标签: javascript jquery ajax datatables

是否可以在datatable ajax调用中成功调用javascript函数。 这是我尝试使用的代码,

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
}

而不是“成功”:fnCallback ------>这是AJAX调用的最后一行。 在这个函数中,我想检查从服务器端发送的值。 提前感谢您的帮助......

10 个答案:

答案 0 :(得分:39)

您可以使用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" }

        ]
    } );

答案 1 :(得分:26)

我找到的最好的方法是使用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
        }
    });

答案 2 :(得分:21)

您可以使用:

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

答案 3 :(得分:5)

对于数据表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.
      }
    });
  }
});

答案 4 :(得分:2)

不应更改ajax的成功选项,因为当数据加载完成时,DataTables在内部使用它来执行表绘制。推荐使用“ dataSrc”来更改接收到的数据。

答案 5 :(得分:1)

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

答案 6 :(得分:1)

基于the docs,当完成Ajax请求时,将触发xhr 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 );
    } )

答案 7 :(得分:1)

这对我来说很好。另一种方式效果不好

tasksToRun.OrderBy(t=> t.Result.Actions.OrderBy(a => 
        a.Description).First().Descritpion)

答案 8 :(得分:0)

尝试以下代码。

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

答案 9 :(得分:0)

也许这并不是您想要的,但是使用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" }            
        ]
    } );