收藏
回答

JSON不能解析问题,紧急,求助?


报错:

at api request success callback function

SyntaxError: Unexpected token  in JSON at position 0


php后台返回数据:

echo json_encode($response); //跟以往并没有任何区别


小程序请求并解析:



报错:



看到帖子有人回复说是bom头问题,

那么请问下,bom头问题怎么解决,是后台解决呢,还是小程序解决呢?


如果是后台解决,我尝试过以下两种方案:

1,

$result = trim($result, "\xEF\xBB\xBF");
print_r(json_decode($result, true));
exit;


2,

$result = @iconv("UTF-8", "GBK//IGNORE", $result);
$result = @iconv("GBK", "UTF-8//IGNORE", $result);
print_r(json_decode($result, true));

exit;

然而都没有生效,实在没办法,在此求助。。。


另外,附加一个问题:

同样是wx.request,同样是php后台返回的json_encode(),在小程序端拿到的response.data,有时候是个string,有时候是个object????

我敢打赌,代码绝笔是一样的用法。


这是断点调试看到的数据:


"{"openGId":"tG4E0P0eBR4VolcGbP-v2lkpdgYB8","watermark":{"timestamp":1503802802,"appid":"wx3b2ac4c74d0ea730"}}"


看着好像都是双引号,不知道有没有问题;如果有的话,怎么解决呢?

大神们看看有没有问题。



最后一次编辑于  2017-08-27
回答关注问题邀请回答
收藏

14 个回答

  • 曾德云
    曾德云
    2018-12-17

    哥,你的问题解决了吗?我也遇到了这样的问题

    2018-12-17
    有用
    回复
  • 云选片~影楼在线选片小程序
    云选片~影楼在线选片小程序
    2017-08-27

    不客气,共同进步,我也被坑过,哈哈。

    2017-08-27
    有用
    回复
  • 李中坤
    李中坤
    2017-08-27

    感谢各位大神鼎力相助;

    最后是尝试了 “『花嫁雾语微请柬』小程序 ”的方法,去掉bom头问题解决问题的,谢谢『花嫁雾语微请柬』小程序 。


    这个有个很重要的点:除了给自己文件去掉bom头,还要给引用的文件去掉bom头,我是在这里被坑了好久。谢谢大家。

    2017-08-27
    有用
    回复
  • GODOG
    GODOG
    2017-08-27

    哈哈 这么尴尬 我以前玩PHP的时候 用json_encode 也会有问题。学习了学习了~~~

    2017-08-27
    有用
    回复
  • 云选片~影楼在线选片小程序
    云选片~影楼在线选片小程序
    2017-08-27

    官方提供的解密例子是有bom头的,这也是我经历过的,如果你用到了官方的解密例子,把每个用到的php文件处理一下bom头就行了。

    2017-08-27
    有用
    回复
  • 云选片~影楼在线选片小程序
    云选片~影楼在线选片小程序
    2017-08-27

    我都是用json_encode,都没报错,你处理了所有的文件bom头了吗?包括引用的文件也要处理,只要引用的文件其中一个有bom头都会出问题的。

    2017-08-27
    有用
    回复
  • 李中坤
    李中坤
    2017-08-27

    谢谢你。可是这个双引号不是我控制的。

    我php后台给一个对一个array数据,进行了json_encode(array),返回给我的数据。。。。

    不知道哪里会有什么问题

    2017-08-27
    有用
    回复
  • GODOG
    GODOG
    2017-08-27

    我也试过经常出现这样的问题,很多时候就是因为String的JSON格式不对,所以导致String无法解析成JSON

    2017-08-27
    有用
    回复
  • GODOG
    GODOG
    2017-08-27


    帮你测试了一下,如果你传回来的数据,最外面是有双引号的话,就无法转成JSON。

    如果是:{"openGId":"tG4E0P0eBR4VolcGbP-v2lkpdgYB8","watermark":{"timestamp":1503802802,"appid":"wx3b2ac4c74d0ea730"}} 就是成功的,所以你再看下你回传的数据内容

    2017-08-27
    有用
    回复
  • 李中坤
    李中坤
    2017-08-27

    "{"openGId":"tG4E0P0eBR4VolcGbP-v2lkpdgYB8","watermark":{"timestamp":1503802802,"appid":"wx3b2ac4c74d0ea730"}}"

    这是返回的json数据,好像是没有问题的。

    dom头的问题我也php处理过,好像没啥用。



    2017-08-27
    有用
    回复

正在加载...

登录 后发表内容