我在PHP中有一个数组数组,我需要将其作为JSON发送到javascript。 PHP脚本和AJAX调用工作,但返回的JSON字符串不是可解析的JSON;它只是将数组粘在一起而没有分隔符或容器,而不是数组数组。
示例JSON字符串:
[{"id":"77","options":[],"price":"4.25","title":"Zeppoli's","spec":""}][{"id":"78","options":[],"price":"7.95","title":"Battered Mushrooms","spec":""}]
创建以上JSON字符串的PHP代码段:
$cartArr = array(); // array of objects to be jsonified
foreach($products as $product){
unset($newItem);
$newItem = array(
"id" => $product['itemID'],
"options" => $theseOptions,
"price" => $product['price'],
"title" => $product['name'],
"spec" => $product["special"],
"cartid" => $product['ID']
);
array_push($cartArr,$newItem);
echo json_encode($cartArr);
}
尝试使用JSON.parse()字符串将导致以下错误,除非手动更正字符串。
Uncaught SyntaxError: Unexpected token [
答案 0 :(得分:2)
你在循环中构建json,这意味着你要输出MULTIPLE独立的json字符串,这是非法的语法。例如你在做什么
[0,1,2][3,4,5]
这是两个独立的阵列相互挤压。它必须更像是
[[0,1,2],[3,4,5]]
是有效的JSON。在完全构建PHP数据结构之后,编码为json LAST ,而不是在构建过程中零碎。
e.g。
foreach(...) {
$array[] = more data ...
}
echo json_encode($array);