Как передать дополнительные параметры вызову jQuery DataTable ajax?
при загрузке jQuery DataTable у меня есть код, показанный ниже. Как передать дополнительные параметры вызову AJAX? Обратный вызов fnServerParams, предложенный в вопросах и ответах ниже, не работает. То есть, наивно используя aodata.push()
приводит к "push is undefined" (потому что, действительно, aodata не является массивом). Так как правильно это сделать?
вопросы:
- Datatables serverside. Отправить дополнительные параметры асинхронно
- понимание fnServerData в Datatables
код:
self.dataTable = self.dataTableContainer.DataTable({
"autoWidth": false,
"bSort": false,
"displayStart": 0,
"paging": false,
"lengthChange": false,
"processing": true,
"serverSide": true,
"dom": "<'dataTables_header dashboard_alert_history__alertHeader'i>",
"ajax": {
url: getDataUri,
error: onError,
cache: false,
"fnDrawCallback": onTableDrawn,
},
"fnDrawCallback": onTableDrawn,
"language": {
"info": resources.alarmHistory,
"infoEmpty": resources.alarmHistory,
"infoFiltered": ''
},
"columns": [
{
"data": "timestamp",
"mRender": function (data) {
return IoTApp.Helpers.Dates.localizeDate(data, 'L LTS');
},
"name": "timestamp"
},
{
"data": "deviceId",
"mRender": function (data) {
return htmlEncode(data);
},
"name": "deviceId"
},
{
"data": "ruleOutput",
"mRender": function (data) {
return htmlEncode(data);
},
"name": "ruleOutput"
},
{
"data": "value",
"mRender": function (data) {
return htmlEncode(IoTApp.Helpers.Numbers.localizeFromInvariant(data));
},
"name": "value"
},
],
"columnDefs": [
{
"targets": [0, 1, 2, 3],
"className": 'table_alertHistory_issueType',
"width": "20%"
}
],
});
1 ответов
Я забыл RTFM. The fnServerParams
обратный вызов теперь наследие для версии 1.9 и выше. В последней версии DataTables вы используете параметр данных ajax как описано в документации DataTables. В приведенном ниже примере добавление mykey
до d
"объект" будет делать трюк:
$(document).ready(function() {
$('#example').DataTable( {
"processing": true,
"serverSide": true,
"ajax": {
"url": "scripts/server_processing.php",
"data": function ( d ) {
d.myKey = "myValue";
// d.custom = $('#myInput').val();
// etc
}
}
} );
} );