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) => {
// 调试工具为object 真机为string this .setData({ msg: 'typeof res.data:' + typeof res.data }) } }) }, }) |
小程序网络返回数据在真机上未能解析为json, 需要appid以便在真机上复现。
代码片段
wechatide://minicode/3hdmzEmZ6jZH
是因为返回的内容存在特殊字符,比如 u2028。相关的可以google一下。在chrome调试工具的network,看请求response,如果里面有奇怪的红点,那就是特殊字符了,这种字符“肉眼是看不见的”。奇怪的是pc和移动大部分浏览器似乎都会自动忽略掉。但是在微信里面,没有过滤,你对内容进行JSON.parse解析自然也会报错的。
具体怎么操作呢,目前我也遇到此问题
wx.request方法解析的时候出错导致的,有可能是你返回的数据中存在无法解析的内容。我的后台用的叔nodejs,遇到的是因为空格导致的解析失败。
将返回的内容替换一下就正确解析了。 string = string.replace(/\s/g," ");
有没有官方来回答一下这个问题的,我也遇到了