2016-09-05 35 views
1

我采用了棱角分明的DataTable和我有一些代码,看起来像这样:当Angular DTOptionsBuilder ajax调用完成时是否有回调?

this.dtOptions = DTOptionsBuilder.newOptions() 
    .withOption('ajax', { 
     type: 'POST', 
     contentType: 'application/json', 
     processData: false, 
     beforeSend: function(xhr, settings) { 
      ... 
     }, 
     data: function(data) { 
      ... 
     } 
    }) 
    .withDataProp('data') 
    .withOption('processing', true) 
    .withOption('serverSide', true);

,妥善所有作品,并在页面上表中填充数据时,Ajax调用返回。我现在要做的就是在ajax调用完成时检测。我曾尝试使用下面beforeSend这一权利:

success: function(data, textStatus, jqXHR, fnCallback) { 
    console.log(data); 
}

这实际打印数据返回到控制台,但是当我再补充一点success回调页面上的表从不与数据填充。那么如何在ajax完成时进行回调触发,并且仍然让页面上的表格填充数据(如通常那样)?

回答

2

dataTables在内部使用ajax success回调,因此如果您覆盖该回调,则会导致分解。但是,数据表推出了自己的dataSrc回调是从数据表成功处理程序中烧给你upportunity操纵响应的任何数据插入前:

this.dtOptions = DTOptionsBuilder.newOptions() 
    .withOption('ajax', { 
    dataSrc: function(json) { 
     //success! 
     console.log(json); 
     return json 
    }, 
    type: 'POST', 
    contentType: 'application/json', 
    processData: false, 
    .... 

看到演示 - >http://plnkr.co/edit/94EWyDanIawCJJgyagiy?p=preview

由于你可以在演示中看到,你也可以在ajax complete回调中选择:

ajax : { 
    complete: function(jqXHR, textStatus) { 
    console.log(jqXHR.responseText) 
    } 
    .. 
} 
相关问题