Я использую DataTables serverSide в проекте Angular2.DataTables ajax.reload() с параметрами
Я пытаюсь перезагрузить таблицу после внесения изменений, и те изменения, которые я хочу передать им в качестве параметров в POST через AJAX.
Дело в том, что DataTables всегда получает объект 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()
, возможность отправки обновленных параметров решит проблему.
Большое спасибо!
Edit 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'},
],
};
И это параметры, которые DataTables является отправка:
(Среди других DataTables параметры)
Когда я звоню ajax.reload()
, независимо от того, что я пробовал, я в конечном итоге отправляю эти же параметры, поэтому отправляю параметры init.