JSON.parse:意外的数据结束

时间:2017-10-04 07:36:26

标签: php json slim

我是Angularjs和SlimPHP的新手,我有一些麻烦将我的数据解析为json。我刚开始一个新的应用程序,我无法弄清楚为什么这不起作用。

这是我的控制器的功能似乎正在工作(我可以使用print_r来显示$ pole),但不能返回Json。在Firefox上的网络中,我有一个错误:" SyntaxError:JSON.parse:JSON数据第1行第1列的意外数据结束"。

public function getPoles($request, $response) {

    $poles = $this->container['form.dao']->getPoles();
    if ($poles == null) {
        return json_encode(["error" => "no data found"]);
    }

    return $response->withJson($poles, 200);
}

formDAO.php中的getPoles()函数:

    public function getPoles() {
    $request =  "SELECT * FROM menu_pole ORDER BY id";
    try {
        $stmt = $this->db->query($request);
        $poles = $stmt->fetchAll(\PDO::FETCH_OBJ);
        return $poles;
    } catch(\PDOException $e) {
        return '{"error":{"text":'. $e->getMessage() .'}}';
    }
}

我想我可能会遗漏一些明显的东西。

编辑:

使用print_r,我得到了这个:

 Array(
[0] => stdClass Object
    (
        [id] => 1
        [libelle] => GE
    )

[1] => stdClass Object
    (
        [id] => 2
        [libelle] => GP
    )

[2] => stdClass Object
    (
        [id] => 3
        [libelle] => GS
    )

[3] => stdClass Object
    (
        [id] => 4
        [libelle] => NO
    )

[4] => stdClass Object
    (
        [id] => 5
        [libelle] => DH
    )

[5] => stdClass Object
    (
        [id] => 6
        [libelle] => CRC
    )

[6] => stdClass Object
    (
        [id] => 7
        [libelle] => SG
    ))

2 个答案:

答案 0 :(得分:0)

像这样返回json:

public function getPoles($request, $response) {

    $poles = $this->container['form.dao']->getPoles();
    if ($poles == null) {
        $data['error'] = 'no data found';
        return json_encode($data);
    }

    return $response->withJson($poles, 200);
}

答案 1 :(得分:0)

我想我找到了问题的根源。在数组中,我没有复制完整的“libelle”字段,因为它们很长。 我刚刚意识到这就是问题所在,因为数据是法语的,所以它们有很多不受支持的口音。

我只需更新此数据库连接的这一行:

{{1}}