我在一个Angular2项目中使用DataTables serverSide。带参数的DataTables ajax.reload()
我想重新加载表进行更改后,我想通过AJAX将这些更改作为参数传递给POST。
的事情是,数据表总是从初始化获得options
对象,而不是一个更新的版本与新参数。
那么,我需要的是是,用ajax.reload()
传递一组新的参数。
这是我目前的功能:
filterData(tableParams) {
console.log('reloading DT. tableparams received are: ' + JSON.stringify(tableParams));
let element = $(this.el.nativeElement.children[0]);
let table = element.find('table.dataTable');
table.DataTable().ajax.reload();
}
此刻,你可以看到,我没有使用tableParams
,这是因为我想展现一个干净的版本,我的功能,我试过很多事情并没有一个工作。
DataTables总是获取初始参数为options
的对象。
这是我绝望的尝试之一:
filterData(tableParams) {
let element = $(this.el.nativeElement.children[0]);
let table = element.find('table.dataTable');
table.DataTable({
ajax: {
url: this.jsonApiService.buildURL('/test_getUsers.php'),
type: 'POST',
data: tableParams,
},
}).ajax.reload();
}
一些帮助,将不胜感激。如果您需要关于如何创建DataTable的更多解释或更多代码片段让我知道。但我认为这个问题只是在ajax.reload()
函数中,能够发送更新的参数将解决问题。
非常感谢!
编辑1
这是我的init options
对象:
let data = {
email: true,
test: 'init',
};
this.options = {
dom: 'Bfrtip',
processing: true,
serverSide: true,
pageLength: 20,
searchDelay: 1200,
ajax: {
url: this.jsonApiService.buildURL('/test_getUsers.php'),
type: 'POST',
data: data,
},
columns: [
{data: 'userId'},
{data: 'userCode'},
{data: 'userName'},
{data: 'userRole'},
{data: 'userEmail'},
],
};
而这些是数据表被发送参数:
(在其他数据表参数)
当我打电话给ajax.reload()
时,无论我尝试过什么,我最终都会发送这些相同的参数,因此会发送init参数。