用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,登录网站

2016-12-18 12:33:38 天下雪原创达人 造轮子 人生巅峰 楼主 136313
这个问题,其实我们论坛的问答里,出现过一次,有个人被坑的外焦里嫩,但是就是找不到原因,最终终于找到了;

问题描述:
安卓下执行request接口,服务端返回的json ,无法解析, typeof  为 string
ios下正常解析;
客户端
[AppleScript] 纯文本查看 复制代码
var responseData = res.data;
console.log(typeof(responseData));


服务端

[AppleScript] 纯文本查看 复制代码
                // 返回JSON数据格式到客户端 包含状态信息
                header('Content-Type:application/json; charset=utf-8');
                exit(json_encode($data));

参考原因:android 下调用request 的时候,自动加上了 bom头,去掉就好了


参考问题:
问题:wx.request返回的json是字符串,怎么破?
为什么有的返回json正常转为对象,但是这个就是不行,怎么办?

答:
看看请求 的 Response 里返回的数据是不是有小红点?
如果有小红点 说明是 返回数据格式有问题。

官方的加密数据解密算法PHP - SDK里的三个文件有带BOM头,要去除




参考问题:
JSON.parse函数为报错的?
这是在微信IDE上调试的

b是通过 wx.request 取回的,这是为什么?该怎么处理?

答:
脚本请求值带了bom头,去除即可



案例N:
1.png
https://a.momo3w.cn/ip/getJson
这是小程序要访问的位置
从内容上看,应该是没问题的 啊
https://a.momo3w.cn/ip/json2
这个内容 看起来也是一个样,结果到手机上测试,只接收到了文本,没有转化成对象
按理说,json本来就是字符串,小程序收到后,会自动转为对象,不知道啥原因
你这个情况比较普遍,一般是带了bom头或者json有特殊字符引起的
看来得想办法把网页的 bom头去掉才行

QQ图片20170221165230.png
有问题请在本站内搜索相应关键词,假如无法解决请在综合交流区内发帖咨询,发帖时请提供详细的问题描述、相关图片及代码。
请问,具体在代码中应该怎样实现呢~新手小白,不好意思~~
莫磨鸟鸟 发表于 2016-12-18 18:36
请问,具体在代码中应该怎样实现呢~新手小白,不好意思~~

专门发个主题问,详细点说明你需要的效果,目前你的实现代码,
有问题请在本站内搜索相应关键词,假如无法解决请在综合交流区内发帖咨询,发帖时请提供详细的问题描述、相关图片及代码。
莫磨鸟鸟 发表于 2016-12-18 18:36
请问,具体在代码中应该怎样实现呢~新手小白,不好意思~~

具体代码不知道怎么搞,这是一个同学的参考:
后台返回数据中有bom非法字符, 前端可以用.trim()方法去一下, 治标的话得让后台把所有的文件编码格式改为utf-8


有问题请在本站内搜索相应关键词,假如无法解决请在综合交流区内发帖咨询,发帖时请提供详细的问题描述、相关图片及代码。
天下雪 发表于 2016-12-27 12:58
具体代码不知道怎么搞,这是一个同学的参考:

已经解决了,是后端解决的~直接返回了对象~~~
莫磨鸟鸟 发表于 2016-12-27 23:38
已经解决了,是后端解决的~直接返回了对象~~~

解决了就好,我手太菜,具体的一些代码问题帮不上忙,就只能四处找找有没有别人遇到的,这刚找到一个,你已经解决了
有问题请在本站内搜索相应关键词,假如无法解决请在综合交流区内发帖咨询,发帖时请提供详细的问题描述、相关图片及代码。
天下雪 发表于 2016-12-28 00:06
解决了就好,我手太菜,具体的一些代码问题帮不上忙,就只能四处找找有没有别人遇到的,这刚找到 ...

哈哈,谢谢了,你天天维护这个论坛,估计也忙得不行
莫磨鸟鸟 发表于 2016-12-28 00:08
哈哈,谢谢了,你天天维护这个论坛,估计也忙得不行

我就一搬运工,尽量搬运好一些的内容给大家看,没啥技术含量,就是费点时间找和发
有问题请在本站内搜索相应关键词,假如无法解决请在综合交流区内发帖咨询,发帖时请提供详细的问题描述、相关图片及代码。
天下雪 发表于 2016-12-28 00:06
解决了就好,我手太菜,具体的一些代码问题帮不上忙,就只能四处找找有没有别人遇到的,这刚找到 ...

你好 ,我也遇到这个问题了,我已经把后台文件的编码改成utf-8了,可执行之后还是有红点,后台返回的数据不是对象,我的是ios环境的,我的域名现在有点问题,所以我是在开发项目选择的是不验证域名,不知道和这个有没有关系.
wx_c6fe57b70e 发表于 2016-12-30 18:59
你好 ,我也遇到这个问题了,我已经把后台文件的编码改成utf-8了,可执行之后还是有红点,后台返回的数据不是 ...

真机下有问题?那个设置对真机无效,详情参考这个
http://www.wxapp-union.com/forum.php?mod=viewthread&tid=648,用来排除你的https问题
有问题请在本站内搜索相应关键词,假如无法解决请在综合交流区内发帖咨询,发帖时请提供详细的问题描述、相关图片及代码。
天下雪 发表于 2016-12-30 19:00
真机下有问题?那个设置对真机无效,详情参考这个
http://www.wxapp-union.com/forum.php?mod=viewthread& ...

不好意思,可能是我没表达清楚.我选择的是开发环境不校验请求域名,没有在真机测试,只是在模拟环境下测试的,
编码格式都已经改过了,可是在调试模式下的Network选项下的response下显示的数据还是带有红点.后台打印出来的是string类型.不知道怎么解决了
wx_c6fe57b70e 发表于 2016-12-30 19:11
不好意思,可能是我没表达清楚.我选择的是开发环境不校验请求域名,没有在真机测试,只是在模拟环境下测试的 ...

参考:http://www.wxapp-union.com/forum.php?mod=viewthread&tid=1316
另外一个红点案例
有问题请在本站内搜索相应关键词,假如无法解决请在综合交流区内发帖咨询,发帖时请提供详细的问题描述、相关图片及代码。
天下雪 发表于 2016-12-30 19:27
参考:http://www.wxapp-union.com/forum.php?mod=viewthread&tid=1316
另外一个红点案例

太感谢了,已经解决了,.原因就是第一次我以为把BOM去掉了,其实根本没去掉,果然是编码的问题.
wx_c6fe57b70e 发表于 2016-12-30 20:46
太感谢了,已经解决了,.原因就是第一次我以为把BOM去掉了,其实根本没去掉,果然是编码 ...

解决了就好,这个红点估计还会坑倒不少人
有问题请在本站内搜索相应关键词,假如无法解决请在综合交流区内发帖咨询,发帖时请提供详细的问题描述、相关图片及代码。
发新帖
您需要登录后才可以回帖 登录 | 立即注册