Angular DTOptionsBuilder ajax 调用完成时是否有回调?
Is there a callback for when an Angular DTOptionsBuilder ajax call finishes?
我正在使用 angular 数据table,我有一些代码如下所示:
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 调用 returns 时,页面上的 table 填充了数据。我现在要做的就是检测 ajax 调用何时完成。我尝试在 beforeSend
:
下面使用它
success: function(data, textStatus, jqXHR, fnCallback) {
console.log(data);
}
这实际上将返回的数据打印到控制台,但是当我添加 success
回调时,页面上的 table 永远不会填充数据。那么,当 ajax 完成后,如何在页面上像往常一样填充我的 table 数据时触发回调?
dataTables 在内部使用 ajax success
回调,因此如果您覆盖它,就会破坏它。但是,dataTables 引入了它自己的 dataSrc
回调,它从 dataTables 成功处理程序中触发,让您有机会在插入任何数据之前操作响应:
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)
}
..
}
我正在使用 angular 数据table,我有一些代码如下所示:
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 调用 returns 时,页面上的 table 填充了数据。我现在要做的就是检测 ajax 调用何时完成。我尝试在 beforeSend
:
success: function(data, textStatus, jqXHR, fnCallback) { console.log(data); }
这实际上将返回的数据打印到控制台,但是当我添加 success
回调时,页面上的 table 永远不会填充数据。那么,当 ajax 完成后,如何在页面上像往常一样填充我的 table 数据时触发回调?
dataTables 在内部使用 ajax success
回调,因此如果您覆盖它,就会破坏它。但是,dataTables 引入了它自己的 dataSrc
回调,它从 dataTables 成功处理程序中触发,让您有机会在插入任何数据之前操作响应:
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)
}
..
}