收藏
回答

小程序网络返回数据在真机上未能解析为json,开发工具上是正常的。

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug wx.request 微信iOS客户端 6.6.6 2.0.8

wx.request发出一个请求,接口响应为

Content-Type:

application/json;charset=UTF-8

的一个数据。

绝大部分情况下都是正常的respones.data为object类型,但是有一个,在真机上取到的respones.data 是string类型。


可能不是小程序的问题,但是这个情况很费解。


const app = getApp()
 
Page({
  data: {
    msg: ''
  },
  onLoad: function () {
    const self = this
    wx.request({
      url: 'https://class.dxy.cn/japi/platform/122120007?id=3',
      success: (res) => {

        console.log('typeof res.data:', typeof res.data)

// 调试工具为object 真机为string

        this.setData({
          msg: 'typeof res.data:' + typeof res.data
        })
      }
    })
  },
})


小程序网络返回数据在真机上未能解析为json, 需要appid以便在真机上复现。


代码片段

wechatide://minicode/3hdmzEmZ6jZH

回答关注问题邀请回答
收藏

4 个回答

  • LQ
    LQ
    2018-08-21

    是因为返回的内容存在特殊字符,比如 u2028。相关的可以google一下。在chrome调试工具的network,看请求response,如果里面有奇怪的红点,那就是特殊字符了,这种字符“肉眼是看不见的”。奇怪的是pc和移动大部分浏览器似乎都会自动忽略掉。但是在微信里面,没有过滤,你对内容进行JSON.parse解析自然也会报错的。


    2018-08-21
    有用 2
    回复
  • 永永永
    永永永
    2018-10-08

    具体怎么操作呢,目前我也遇到此问题

    2018-10-08
    有用
    回复
  • undefined
    undefined
    2018-08-21

    wx.request方法解析的时候出错导致的,有可能是你返回的数据中存在无法解析的内容。我的后台用的叔nodejs,遇到的是因为空格导致的解析失败。

    将返回的内容替换一下就正确解析了。 string = string.replace(/\s/g," ");

    2018-08-21
    有用
    回复
  • 一步
    一步
    2018-08-09

    有没有官方来回答一下这个问题的,我也遇到了

    2018-08-09
    有用
    回复
登录 后发表内容