【问题标题】:SyntaxError: Unexpected end of JSON input at Object.parse (native) PHP MySQLSyntaxError:Object.parse (native) PHP MySQL 中 JSON 输入的意外结束
【发布时间】: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);'还是不行。
  • 你实际上在你最后一个对象的末尾多了一个,SubmitedBy x) 你必须删除它,所以它应该是$data .= '"SubmitedBy":"' . $SubmitedBy . '";
  • @MiguelGuerreiro,谢谢它的工作。

标签: php mysql angularjs json


【解决方案1】:

您实际上是在SubmitedBy 的最后一个值处添加, 替换此

$data .= '"SubmitedBy":"' . $SubmitedBy  . '",';

有了这个

$data .= '"SubmitedBy":"' . $SubmitedBy;

【讨论】:

  • 我试过了,仍然给我下面的错误 angular.min.js:117 SyntaxError: Unexpected end of JSON input at Object.parse (native)
【解决方案2】:

你实际上在最后一个对象的末尾有一个额外的,SubmitedBy x) 你必须删除它,所以它应该是

 $data .= '"SubmitedBy":"' . $SubmitedBy . '";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-10
    • 2015-08-05
    • 2021-07-03
    • 2017-12-15
    • 2019-06-29
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多