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);
}
答
我想我找到了问题的根源。在阵列中,我没有复制完整的“libelle”字段,因为它们很长。 我刚刚意识到这是问题,因为数据是法文的,他们有很多不支持的口音。
我只是需要更新此行我的数据库连接:
$db = new PDO("mysql:host=$host;dbname=$db_name", $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
谢谢,但不幸的是这并没有解决问题。我仍然有同样的错误 – Nagah
你是否在'$ poles'中得到了极点的结果?你可以发布吗? –