我正在使用数据表服务器端在 Angular2 项目中。
我尝试在进行更改后重新加载表,并且我想通过 AJAX 将这些更改作为 POST 中的参数传递。
问题是 DataTables 总是得到options
来自初始化的对象,而不是更新版本新参数.
So, 我需要的是,使用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
object,具有初始参数。
这是我绝望的尝试之一:
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();
}
一些帮助将不胜感激。如果您需要有关如何创建数据表的进一步说明或更多代码片段,请告诉我。但我认为问题在于ajax.reload()
函数,能够发送更新的参数将解决该问题。
非常感谢!
Edit 1
这是我的初始化options
object:
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'},
],
};
这些是 DataTables 发送的参数:
(以及其他数据表参数)
当我打电话时ajax.reload()
,无论我尝试过什么,我最终都会发送这些相同的参数,因此,发送初始化参数。