javascript - Php JSON 编码数组和解码中的意外标记错误

标签 javascript php json

我从 SQL 查询中获取了一个数组,对其进行了编码,当我在 javascript 中进行解码时,我收到了错误

Unexpected token a in JSON at position 0

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);

在客户端,我接收数据,在解码步骤之前,我从 console.log(data); 获取数据。在 JavaScript 中:

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   

最佳答案

不要在 PHP 页面上输出 var_dump,它会使该页面上的 json 无效。删除var_dump(),错误就会消失。

正如您所看到的:

Unexpected token a in JSON at position 0

该错误是由于 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":""}]

关于javascript - Php JSON 编码数组和解码中的意外标记错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47693187/

相关文章:

C# MVC 4 : Passing JavaScript array in View to Controller

javascript - fullcalendar - 当单击上一个/下一个时,移动的事件再次恢复到旧日期

javascript - AngularJS Material 导入后无法正常工作

php - 在 PHP 类文件中放置 include 语句的位置

php循环502坏网关

javascript - 为什么过滤新的 JSON 对象会导致旧对象 self 更新?

javascript - 从下拉列表中选择值时清除输入字段中的值

php - 如何使用php从上传文件夹添加和删除tinymce中的图像

c# - 使用 Windows Phone 7 解析包含数组的 JSON 对象

c# - 反序列化 json 数组