passing a variable to DataTables server side processing
passing a variable to DataTables server side processing
I have a dropdown box that I use to get a variable. Then I want to pass that variable to DataTables server side processing. The PHP page I use as the URL will take the variable to fill in a query. But I haven't been successful in passing this variable.
$('#medProcDataList').change(function() {
//fetch variable
var $selectedValue = $(this).val();
var arrSelVal = $selectedValue.split(":");
$code = arrSelVal[0]; //get hospital code
//Then I want to pass the variable to DataTables
$('#results').DataTable( {
"processing": true,
"serverSide": true,
data: {code: $code },
"ajax": "php/getDataForCode.php",
"ajax": {
"url": "scripts/server_processing.php",
"data": $code
columns: [
{ title: "Hospital", data: "hospital_name" },
{ title: "Description", data: "raw_description" },
{ title: "Insurer", data: "full_payer_name" },
{ title: "Insurer type", data: "play_type"},
{ title: "You Pay", data: "price" }
]
} );
}//end function
PHP:
$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if (mysqli_connect_errno()) {
printf("Connect failed: %s", mysqli_connect_error());
exit;
}
mysqli_set_charset($db, 'utf8'); //important! or it won't echo the array
if( $_POST) {
$code = mysqli_real_escape_string($db, $_POST['code']);
$data = array();
$q = "SELECT hospital_name, raw_description, full_payer_name, plan_type, format([price], 'N0') FROM `hospital_transparency_data` where procedure_codes = '" . $code . "' order by hospital_name, full_payer_name";
$result = $db->query($q);
while($row = $result->fetch_array(MYSQLI_ASSOC)) {
//Add this row to the reply
$data[] = $row;
}
$db->close();
echo json_encode($data);
} //if POST
My query yields no results, so I know
What am I doing wrong please?
Edited by Kevin: Syntax highlighting. Details on how to highlight code using markdown can be found in this guide
Answers
One problem is you have two
ajax
options configured. Only configure one ajax option. You also havedata
configured which shouldn't be used withajax
.The Datatables code snippet you posted is not syntactically correct. Maybe you posted only some of it? Looks like your
columns
option is inside the secondajax
option.To pass data to the server use the
ajax.data
option as a function. The docs have a couple examples plus here is a running example.Kevin