¿Cómo transfiero parameters adicionales a la llamada ajax de jQuery DataTable?

Al cargar un jQuery DataTable, tengo el código que se muestra a continuación. ¿Cómo paso parameters adicionales a la llamada AJAX? La callback de fnServerParams sugerida en las preguntas y respuestas a continuación no funciona. Es decir, el uso aodata.push() da como resultado que "push no está definido" (porque, de hecho, aodata no es una matriz). Entonces, ¿cuál es la forma correcta de hacer esto?

Preguntas relacionadas:

  • Datatables en el lado del server. Enviar parameters adicionales de forma asíncrona
  • Comprender fnServerData en Datatables

Código:

 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, "infoFiltenetworking": '' }, "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%" } ], }); 

Me olvidé de RTFM. La fnServerParams llamada de fnServerParams ahora es henetworkingada para las versiones 1.9 y anteriores. En la última versión de DataTables, aprovecha el parámetro de datos ajax como se describe en la documentation de DataTables . En el siguiente ejemplo, mykey al object d hará el truco:

 $(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 } } } ); } );