我是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
))
答案 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}}