ajax 调用 PHP 数据返回 VM92:1 未捕获语法错误:意外的标记 {.


ajax call to PHP data returns VM92:1 Uncaught SyntaxError: Unexpected token {

谁能指出我正确的方向,为什么我从这个 ajax 调用中收到一个意外的令牌"}"?我已经检查了错误的任何额外字符,但没有找到任何字符。 我的 JSON 无法在线验证,但由于我没有手动创建 JSON,因此这没有意义。如果对某人意味着什么,则在VM98中会发生错误。 任何帮助将不胜感激。

$.ajax({
    cache: 'false',
    type: 'GET',
    dataType: "json",
    url: 'list.php',
    success: function(result){
        var list = JSON.parse(result);
        console.log(list);
   },
   error: function(){
       console.log('error');
   }
});
<?php
$sql = "SELECT * FROM lists";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_object()) {
        $json_user = json_encode($row);
        echo $json_user;
    }
} else {
    echo "0 results";
}

您正在将多个 JSON 字符串连接在一起,这不是有效的 JSON 字符串。

您的 JSON 如下所示:

{"key":"value1"}{"key":"value2"}{"key":"value3"}

您需要将所有行放入一个数组中,并将其编码为 JSON。
您可以在单个调用中获取所有行并回显该 JSON 编码的数据,而不是在 while 循环中回显每一行。

echo json_encode($result->fetch_all(MYSQLI_ASSOC));

这应该产生类似以下内容:

[{"key":"value1"},{"key":"value2"},{"key":"value3"}]