【发布时间】:2016-05-19 12:30:52
【问题描述】:
我正在尝试在 MySQL 数据库中显示数据。但是,我不断收到 SyntaxError: Unexpected end of JSON input at Object.parse (native) 。
我的获取数据的 PHP 文件是
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
include_once 'config/database.php';
include_once 'objects/ideas.php';
$database = new Database();
$db = $database->getConnection();
$ideas = new ideas($db);
$stmt = $ideas->readAll();
$num = $stmt->rowCount();
if($num>0){
$data="";
$x=1;
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
// extract row
// this will make $row['name'] to
// just $name only
extract($row);
$data .= '{';
$data .= '"id":"' . $id . '",';
$data .= '"name":"' . $name . '",';
$data .= '"description":"' . html_entity_decode($description) . '",';
$data .= '"SubmitedBy":"' . $SubmitedBy . '",';
$data .= '}';
$data .= $x<$num ? ',' : ''; $x++; }
}
// json format output
echo '{"records":[' . $data . ']}';
?>
我的 AngularJS 代码,
$scope.getAll = function() {
$http.get("read_ideas.php").success(function(response) {
$scope.names = response.records;
});
}
而 MySQL 数据库中的数据只是
id - 1
name - me
description - desc
SubmitedBy - me
created - 2016-05-19 14:13:10
modified - 2016-05-19 17:43:10
我无法弄清楚为什么它会一次又一次地抛出这个错误。
我知道它无法将 db 中的数据解析为 JSON 格式。但是,我该如何解决它。
【问题讨论】:
-
生成的 JSON 是什么样的?你测试过它是有效的吗?你到底为什么要通过将字符串组合在一起而不是使用
json_encode来生成它?! -
jsonlint.com 是一个很好的在线工具来检查你的 JSON 结构。
-
试过'echo json_encode($row);'还是不行。
-
你实际上在你最后一个对象的末尾多了一个
,SubmitedByx) 你必须删除它,所以它应该是$data .= '"SubmitedBy":"' . $SubmitedBy . '"; -
@MiguelGuerreiro,谢谢它的工作。