我从SQL查询中获取了一个数组,对其进行了编码,当我在javascript中解码时,我收到了错误
在位置0的JSON中出现意外的令牌
编码前的数组的var_dump
:
array(1) { [0]=> array(10) { ["order_id"]=> string(10) "1512642144"
["order_erp_id"]=> string(1) "0" ["order_type"]=> string(3) "web"
["order_date"]=> string(23) "2017-12-07 11:22:24.263" ["order_total"]=>
string(4) "0.00" ["order_desc1"]=> string(3) "web" ["order_desc2"]=>
string(4) "test" ["no_items"]=> string(1) "0" ["order_count"]=> int(1)
["item_arr"]=> string(0) "" } }
[{"order_id":"1512642144","order_erp_id":"0","order_type":"web",
"order_date":"2017-12-07 11:22:24.263","order_total":"0.00",
"order_desc1":"web","order_desc2":"test","no_items":"0",
"order_count":1,"item_arr":""}]
然后我编码并发送:
echo json_encode($order_item_arr);
在客户端,我收到数据,在解码步骤之前,我从javascript中的console.log(data);
获得了这个数据:
array(1) {
[0]=>
array(10) {
["order_id"]=>
string(10) "1512642144"
["order_erp_id"]=>
string(1) "0"
["order_type"]=>
string(3) "web"
["order_date"]=>
string(23) "2017-12-07 11:22:24.263"
["order_total"]=>
string(4) "0.00"
["order_desc1"]=>
string(3) "web"
["order_desc2"]=>
string(4) "test"
["no_items"]=>
string(1) "0"
["order_count"]=>
int(1)
["item_arr"]=>
string(0) ""
}
}
[{"order_id":"1512642144","order_erp_id":"0","order_type":"web",
"order_date":"2017-12-07 11:22:24.263","order_total":"0.00",
"order_desc1":"web","order_desc2":"test","no_items":"0",
"order_count":1,"item_arr":""}]
所以它看起来很好,当我用JSON.parse(data);
解码时我有错误:
VM414:1 Uncaught SyntaxError: Unexpected token a in JSON at position 0
答案 0 :(得分:2)
Uncaught SyntaxError:位于0的JSON中的意外标记a
因此,“JSON”中的第一个字符是a
,它不能是有效的JSON。并且您的echo json_encode($order_item_arr);
行不会输出它。
编码前的数组的var_dump:
array(1) { [0]=> array
...而且有你的问题。您可以看到第一个字符是a
。
您正在尝试将var_dump解析为JSON。
不要那样做。改为解析JSON。
答案 1 :(得分:2)
不要在PHP页面上输出var_dump
,它会使该页面上的json无效。删除var_dump()
,错误将消失。
正如您所见:
在位置0的JSON中出现意外的令牌
由于array(1) {
导致错误,这不是有效的json。并且打破了整个json数据。
所以,只需删除var_dump()
即可。
看看这个:
array(1) {
[0]=>
array(10) {
["order_id"]=>
string(10) "1512642144"
["order_erp_id"]=>
string(1) "0"
["order_type"]=>
string(3) "web"
["order_date"]=>
string(23) "2017-12-07 11:22:24.263"
["order_total"]=>
string(4) "0.00"
["order_desc1"]=>
string(3) "web"
["order_desc2"]=>
string(4) "test"
["no_items"]=>
string(1) "0"
["order_count"]=>
int(1)
["item_arr"]=>
string(0) ""
}
}
删除var_dump()
将删除上面的部分,并且只留下下面的字符串,这是有效的json。
[{"order_id":"1512642144","order_erp_id":"0","order_type":"web",
"order_date":"2017-12-07 11:22:24.263","order_total":"0.00",
"order_desc1":"web","order_desc2":"test","no_items":"0",
"order_count":1,"item_arr":""}]
答案 2 :(得分:0)
JSON.parse()用于将包含JSON表示法的字符串转换为Javascript对象。
您的代码将对象转换为字符串(通过调用.toString())以尝试将其解析为JSON文本。 默认的.toString()返回" [object Object]",这是无效的JSON;因此错误