Me gustaría obtener datos en la carga de la página y luego tener filtros en los que se pueda hacer clic para recuperar los datos. La consulta es una solicitud posterior porque los parámetros de consulta son complejos y deben representarse como json para la agrupación lógica.
El código es el siguiente:
// table initialization table = $('my_table').DataTable({ processing: true, ajax: { url: 'api/v1/get_documents', type: 'POST', contentType: "application/json; charset=utf-8", data: () => { return JSON.stringify({ doc_filters: { archived: false, doc_type: 'accounting' }, }) }, }, columns: my_columns, }); $('#archive_button').click(() => { table.ajax.data = () => { return JSON.stringify({ project_filters: { archived: true, } }); }; table.ajax.reload(); })
Con la ayuda de la sugerencia de @andrewJames, pude refactorizar mi código de la siguiente manera:
// table initialization table = $('my_table').DataTable({ processing: true, ajax: { url: 'api/v1/get_documents', type: 'POST', contentType: "application/json; charset=utf-8", data: () => { archiveStatus = $('#archive_button').val(); documentType = $('#document_type').val(); return JSON.stringify({ doc_filters: { archived: archiveStatus, doc_type: documentType }, }) }, }, columns: my_columns, }); $('#archive_button, #document_type').click(() => { table.ajax.reload(); })