当我将 json 编码值从 PHP 传递到 Javascript 并仅在控制台记录它时,它返回给我:{"id":"4","username":"muzikant346","coins":"675","avatar1":"1","avatar2":"0","avatar3":"0","avatar4":"0","avatar_selected":"0"}这是一个字符串,当我想用 Javascript 解析它时,它返回一个错误:eUncaught SyntaxError: Unexpected token in JSON at position 0at JSON.parse (<anonymous>)at Object.success (welcome.js:11)at c (jquery-3.4.1.min.js:2)at Object.fireWith [as resolveWith] (jquery-3.4.1.min.js:2)at l (jquery-3.4.1.min.js:2)at XMLHttpRequest.<anonymous> (jquery-3.4.1.min.js:2)我不明白为什么 javascript 不能解析这个。有我的 PHP(从数据库中获取)代码:$sql = "SELECT * FROM serbian_values WHERE username = '$username'"; $result = mysqli_query($link, $sql); if($result){ while($row = mysqli_fetch_assoc($result)){ $value[] = $row; } echo json_encode($value[0]); }
3 回答
暮色呼如
TA贡献1853条经验 获得超9个赞
AU+FEFF : ZERO WIDTH NO-BREAK SPACE [BOM] {BOM, ZWNBSP}
不是用于开始 JSON 文本的有效字符。
它被插入到 PHP 程序输出的开头(或者在你没有向我们展示的 JS 中解析之前混合,但这种可能性较小)。
可能这是您从 PHP 输出charset
的标头上出现的错误所使用的Content-Type
,但该字符可能只是潜伏在源代码中的某个地方。使用十六进制编辑器可能最容易找到。
喵喵时光机
TA贡献1846条经验 获得超7个赞
修复第一个 BOM 字符的另一种方法,
function stripBOM(content) {
content = content.toString()
if (content.charCodeAt(0) === 0xFEFF) {
content = content.slice(1)
}
return content
}
console.log(JSON.parse(stripBOM(obj)));
参考 https://gist.github.com/pbakondy/f5045eff725193dad9c7
繁华开满天机
TA贡献1816条经验 获得超4个赞
JSON.parse
只能解析string
元素。一种解决方案是首先将您的 JSON 字符串化:
JSON.parse(JSON.stringify({"id":"4","username":"muzikant346","coins":"675","avatar1":"1","avatar2":"0","avatar3":"0","avatar4":"0","avatar_selected":"0"}));
- 3 回答
- 0 关注
- 137 浏览
添加回答
举报
0/150
提交
取消