I'm using AJAX to send a request to another php page where it returns the result of a query. I was calling it through xmlhttprequest to javascript to get the contents of that php page, but since i was mixing presentation logic "e.g. echo blah blah" with actual code logic I wanted to find a way where I could leave the php logic with my query alone, store the result on an array, and through ajax pass it down to my js code to use in a function.
I'm trying to populate a drop down list with the contents of this array. I've tried json encode but I'm not having any luck.
Here's code for the php page requested:
<html>
<head>
</head>
<body>
<?php
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
$con = mysqli_connect('*******','********','******','****');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
$j = mysqli_real_escape_string($con, $_GET['j']);
mysqli_select_db($con,"4h");
$sql="SELECT nombreClub FROM club4h WHERE oficinaLoc LIKE '%".$j."%'";
$result = mysqli_query($con,$sql);
while($row = $result->fetch_array()) {
$response[] = $row;
}
file_put_contents('getnombre.php',json_encode($response));
mysqli_close($con);
?>
</body>
</html>
Here's my js function:
function loadDoc(url, cfunc, sel){
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function(){
if (xhttp.readyState == 4 && xhttp.status == 200){
cfunc(xhttp);
}
}
xhttp.open("GET", url +sel, true);
xhttp.send();
}
function selClub(xhttp) {
document.getElementById("nombreClub").style.display = "inline";
var optData = <?php file_get_contents('getnombre.php'); ?>;
var newClub = document.getElementById("addClub");
newClub.type = "text";
document.getElementById("addOption").style.display = "inline";
$("#addOption").click(function(){
$("#nombreClub").append('<option value="' + $("#addClub").val() + '">' + $("#addClub").val() + '</option>');
$("#nombreClub").last().focus;
});
}
I call it through an onchange event when an user clicks a previous drop down list so this drop down list gets populated with options specific for the previous list. I know how to add the options to the list, I'm just having trouble getting the data from the php page to js without having to do something like this:
$a = mysqli_real_escape_string($con, $_GET['a']);
mysqli_select_db($con,"4h");
$sql="SELECT nombre FROM personal4h WHERE unidadProg LIKE '%".$a."%'";
$result = mysqli_query($con,$sql);
echo '<select name="agenteExt" id="agenteExt">
<option value="">Seleccione Agente</option>';
while($row = mysqli_fetch_array($result)) {
echo "<option value =" . $row['nombre'] . ">" . htmlentities($row['nombre']) . "</option>";
}
echo "</select>";
mysqli_close($con);
?>