Reputation: 149
I am trying to get some JSON from an external PHP file using AJAX and put it in an option list.
I have XAMPP and got Apache and Mysql running, and I've got everything working for 1 JSON object, but when I add the second one it gives me an error: Uncaught SyntaxError: Unexpected token < in JSON at position 0. Sorry if I'm bad at explaining I'm new.
Here is my php:
<?php
//connection to mysql(my connection code goes here)
//feeders
$feeders = [];
$sql = "SELECT Name FROM feeder";
$result = $conn->query($feeder_sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$feeders[] = $row["Name"];
};
};
$feeder_list = array("feeders" => $feeders);
echo json_encode($feeder_list);
//recorders
$recorders = [];
$sql = "SELECT Name FROM recorders";
$result = $conn->query($recorder_sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$recorders[] = $row["Name"];
};
};
$recorder_list = array("recorders" => $recorders);
echo json_encode($recorder_list);
?>
And here is my Jquery:
$(function() {
var feeders;
var recorders;
$.get('home.php', function(data){
feeders = JSON.parse(data).feeders;
for (var i = 0; i < feeders.length; i++) {
$("#feeders").append("<option value =" + feeders[i] + ">" + feeders[i] + "</option>");
}
recorders = JSON.parse(data).recorders;
for (var i = 0; i < recorders.length; i++) {
$("#recorders").append("<option value =" + recorders[i] + ">" + recorders[i] + "</option>");
}
});
});
Upvotes: 0
Views: 42
Reputation: 42143
You are using echo multiple times in server side which is combined response for jQuery part. Combine your both query results in one array and encode and echo once in the end. Adjust your jQuery part accordingly.
$output = [];
//feeders
$feeders = [];
$sql = "SELECT Name FROM feeder";
$result = $conn->query($feeder_sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$feeders[] = $row["Name"];
};
};
$output['feeders'] = $feeders;
//recorders
$recorders = [];
$sql = "SELECT Name FROM recorders";
$result = $conn->query($recorder_sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$recorders[] = $row["Name"];
};
};
$output['recorders'] = $recorders;
// final output
echo json_encode($output);
Upvotes: 1