时间:2019-05-03 来源:小程序工厂
韩***:
后台返回的字符串要转JSON对象才能取到。
淡***:
老代码了,看了下说是后台存在UTF8 bom
老***:
楼上说法有误。
你这个肯定是因为你后台拼接的字符串对象格式有误,你应该仔细检查哪里不符合对象规范。
可以很负责的说,微信小程序拿到后台拼接的对象格式字符串是会自动转成对象的。
淡***:
老代码了,莫名其妙出的错误。然后还报错:
Undefined property: stdClass
韩***:
data里面的数据是他们后台拼接的。微信小程序是不会处理的。
淡***:
BOM: Byte Order Mark
UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉弱编辑器(记事本)当前文件采用何种编码,方便编辑器识别。
PHP在设计之初,没有考虑到BOM头的问题,因此很容易因为BOM头引发诡异的问题,比如编码转换失败,样式错乱等等问题,而且此问题相当隐蔽,很难确定发生问题的文件(试想在没有工具的情况下从上万的工程文件中找到哪个文件带有BOM头)。
BOM头是隐藏字符,非编辑字符,就像普通空文件一样,当我们写{BOM头}
所以我们在开发过程中,得创建不包含BOM头的UTF8文件,具体见编辑器设置。对于上传文件,用代码截取BOM头即可
if ( substr( $data, 0, 3 ) == "\xEF\xBB\xBF" ){ $data=substr_replace( $data, '', 0, 3 ) ;
H***:
response.data 是字符串,string.xxx 当然是 undefined
淡***:
是include文件头有BOM字符,删除了就没事了。
代码本身没问题的。