How to set dynamically the Ajax URL of a dataTable?
SOLUTION 1
Use ajax.url()
API method to set the URL that DataTables uses to Ajax fetch data.
$("#select_id").on("change", function(){ // set the ajax option value of the dataTable here according to the select's value $('#table_tabl').DataTable() .ajax.url( "<?php echo RP_SSP ?>server_processing_reservTables.php?param=" + encodeURIComponent(this.value) ) .load();});
SOLUTION 2
Use ajax.data
option to add or modify data submitted to the server upon an Ajax request.
var tbl = $('#table_tabl').DataTable({ // ... skipped other parameters ... ajax: { url: "<?php echo RP_SSP ?>server_processing_reservTables.php", data: function(d){ d.param = $('#select_id').val(); } }});
I found it :
$("#salle_code").on("change", function(){ tbl.ajax.url("<?php echo RP_SSP ?>server_processing_reservTables.php?salle_code="+$(this).val()).load(); });
Datatable Version : 1.10.0-beta.1
Using fnDraw
to Redraw the table.
Sample code for using fndraw
$(document).ready(function() { var oTable = $('#example').dataTable(); // Re-draw the table - you wouldn't want to do it here, but it's an example :-) oTable.fnDraw();} );
$(document).ready(function() { var tbl = $('#table_tabl').DataTable({ responsive: true, "oLanguage": { "sUrl": "<?php echo RP_LANG ?>fr_FR.txt", }, "processing": true, "serverSide": true, "sAjaxSource": "<?php echo RP_SSP ?>server_processing_reservTables.php", // I want to add a parmeter to it dynamically when a select element is selected "aoColumnDefs": [{ "aTargets": [3], "mData": 3, "mRender": function(data, type, full) { return '<div style="text-align:center;"><a href="RestaurantReservation/reserverTable/' + data + '" title="Réserver"><span class="mif-lock icon"></span></a></div>'; } }], "aLengthMenu": [ [10, 25, 50, 100, -1], [10, 25, 50, 100, "Tout"] ] }); $("#select_id").change(function () { var end = this.value; var NTypSource = '<?php echo RP_SSP ?>server_processing_reservTables?type='+end+''; var oSettings = tbl.fnSettings(); oSettings.sAjaxSource = NTypSource; tbl.fnDraw(); });});