I am working with CodeIgniter and I have the following problem.
I have a controller function in details.php
which takes an argument:
function details($id) {
$this->datatables
->select('product_id, original_amount, quantity')
->from('orders');
echo $this->datatables->generate();
}
Now I need to call this from views, i.e. I want DataTables to display it like so:
<script>
$(document).ready(function()
$('#example').dataTable({
...
'sAjaxSource' : 'admin/data/details',
...
});
</script>
So, how do I pass arguments to the sAjaxSource
key, namely the $id
variable?
You should use fnServerParams
as specified in the docs.
$(document).ready(function() {
$('#example').dataTable( {
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "scripts/server_processing.php",
"fnServerParams": function ( aoData ) {
aoData.push( { "name": "more_data", "value": "my_value" } );
}
} );
} );
I was struggling with this issue myself. The answer of John Moses didn't work for me, also the link he provides links to the new documentation which, I think, does not count for older versions of datatables.
Although, I found out that the current server side processing is working like jQuery, where older versions with "sAjaxSource" don't work that way.
For me, I just simpely added my parameters in the url of the sAjaxSource
. So in your example code:
$customPHPvar = "mycustomvar";
<script>
$(document).ready(function() {
$('#example').dataTable( {
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "scripts/server_processing.php?customvar=<?php echo $customPHPvar; ?>",
} );
} );
</script>
in server_processing.php
$_GET['customvar'];