Javascript JSON编码的多维数组返回错误语法(意外)
我有一个PHP数组,需要将其作为JSON发送到javascript。PHP脚本和AJAX调用可以工作,但返回的JSON字符串不能解析JSON;它不是数组的数组,而是将数组粘在一起,没有分隔符或容器 JSON字符串示例:Javascript JSON编码的多维数组返回错误语法(意外),javascript,php,arrays,json,multidimensional-array,Javascript,Php,Arrays,Json,Multidimensional Array,我有一个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",
[{"id":"77","options":[],"price":"4.25","title":"Zeppoli's","spec":""}][{"id":"78","options":[],"price":"7.95","title":"Battered Mushrooms","spec":""}]
$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字符串的PHP代码段:
[{"id":"77","options":[],"price":"4.25","title":"Zeppoli's","spec":""}][{"id":"78","options":[],"price":"7.95","title":"Battered Mushrooms","spec":""}]
$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 [
您正在循环中构建json,这意味着您正在输出多个独立的json字符串,这是非法语法。e、 你在干什么
[0,1,2][3,4,5]
这是两个单独的阵列相互干扰。它必须更像
[[0,1,2],[3,4,5]]
要成为有效的JSON。在您完全构建PHP数据结构之后,在JOSS<强>最后中进行编码,而不是在构建过程中间的零碎部分。
e、 g
您的JSON格式不正确。每个项目都是自己数组中的一个对象,而我相信您只需要一个包含多个项目的数组。将
echo json\u encode
行放在循环之外。如果有多个迭代,那么一个接一个的JSON将无效。e、 g.[]]
是无效的JSON。