Как использовать JSON и AJAX без ошибок - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь получить JSON из внешнего файла PHP с помощью AJAX и поместить его в список параметров.

У меня есть XAMPP и запущены Apache и Mysql, и у меня все работает на 1 объект JSON, но когда я добавляю второй объект, он выдает ошибку: Uncaught SyntaxError: Неожиданный токен <в JSON в позиции 0. Извините, если я плохо объясняю, что я новичок. </p>

Вот мой 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);

?>

А вот мой 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>");
}
});
});

1 Ответ

0 голосов
/ 20 января 2019

Вы используете echo несколько раз на стороне сервера, что является комбинированным ответом для части jQuery . Объедините оба результата запроса в одном массиве и закодируйте и отобразите один раз в конце. Отрегулируйте jQuery часть соответственно.

$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...