为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 javascript 不解析这个字符串?

为什么 javascript 不解析这个字符串?

PHP
凤凰求蛊 2022-12-23 16:36:48
    当我将 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,但该字符可能只是潜伏在源代码中的某个地方。使用十六进制编辑器可能最容易找到。


查看完整回答
反对 回复 2022-12-23
?
喵喵时光机

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


查看完整回答
反对 回复 2022-12-23
?
繁华开满天机

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



查看完整回答
反对 回复 2022-12-23
  • 3 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信