如何使用JSON和Ajax而不会出现错误

时间:2019-01-20 02:31:32

标签: php jquery json ajax

我正在尝试使用AJAX从外部PHP文件中获取一些JSON,并将其放在选项列表中。

我有XAMPP并运行了Apache和Mysql,并且所有东西都可以用于1个JSON对象,但是当我添加第二个对象时,它给了我一个错误:Uncaught SyntaxError:意外的标记<在JSON中的位置0。 对不起,如果我不善于解释自己是新人。

这是我的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 :(得分:1)

您在服务器端多次使用 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);