$ .ajax给我一个有关我的PHP脚本返回的一些JSON的解析错误。我用这个函数来扩展我的PDO语句,手动编码JSON,希望为一些非常大的数据集保存一些内存。PHP手册JSON编码 - parseError
为什么不能工作?如果我在我的编辑器中将响应文本复制/粘贴到JSON.parse中,它可以正常工作。所以这可能是一些逃避问题?另外,如果我取出前三行(编码x,y和行)并将它返回一个数组,它就可以正常工作。只是不如我拼凑在一起的对象。
public function toJSON ($x, $y) {
echo "{x:" . json_encode($x) . ",";
echo "y:" . json_encode($y) . ",";
echo "rows:[";
$i = 0;
while ($row = $this->fetch(PDO::FETCH_ASSOC)) {
if ($i) echo ",";
echo json_encode($row, JSON_NUMERIC_CHECK);
if ($i > 0 && $i % 100 === 0) {
ob_flush();
flush();
}
$i++;
}
echo "]}\n";
}
我同意,很可能一个逃避问题,但我还是不明白你的推理不把你的数据放入一个数组中,并在数组中加入'json_encode()。 – Matt 2012-08-10 20:18:11
我认为这对于服务器内存比对fetchAll更高效,然后进行编码。特别是在处理大量请求时,我需要这么做。 – 2012-08-10 20:27:29
我认为@MattK有一个相当不错的答案(如果他正确地确定了你的问题,那就是)。 – Matt 2012-08-10 20:28:35