JSON.parse:意外的数据结束

问题描述:

我是Angularjs和SlimPHP的新手,我有一些麻烦将我的数据解析为json。我刚开始一个新的应用程序,我不知道为什么这不起作用。JSON.parse:意外的数据结束

这里是我的控制器似乎在工作的功能(我可以使用print_r来显示$极点),但不能返回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); 
} 

的getPoles从formDAO.php()函数:

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 
    )) 

返回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); 
} 
+0

谢谢,但不幸的是这并没有解决问题。我仍然有同样的错误 – Nagah

+1

你是否在'$ poles'中得到了极点的结果?你可以发布吗? –

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

我只是需要更新此行我的数据库连接:

$db = new PDO("mysql:host=$host;dbname=$db_name", $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));