求解,昨天我更新了HBuilder到最新版本(6.8.1.201512032138)后,
,真机调试的时候之前都正常页面现在很多出现错误,检查发现都是a = JSON.parse(s);这个地方出现问题,JSON转码不了,s的数据都是存在plus.storage中的,试过只要从服务端直接拉下来的数据通过JSON.parse是正确的,但是当把数据存进plus.storage再取出来转换就出错了,这是什么原因?
之前都正常的,就这两天更新了才会,求解!!
是我存入plus.storage中的数据要做下处理还是要修复Bug才行,给个解决方案啥!?
大概的操作如下:
mui.ajax('__URL__&id=' + obj.id + '&sign=' + obj.sign,{
type:'post',
dataType:'json',
success:function(d){
if (d) {
mui.alert(d['title']); // 正常
var sData = JSON.stringify(d);
mui.alert(sData); // 正常
plus.storage.setItem('app_data' + obj.id, sData);
var data = plus.storage.getItem('app_data' + obj.id);
mui.alert(data); // 正常,JSON字符串
var aData = JSON.parse(data);
mui.alert(aData['title']); // 不正常,出不来
}
}
});
把上面的plus.storage改成localStorage就是正常的
7 个回复
stock2
是系统升级后的bug, 你可以这个问题搜索下.
打包还没修复吗?
晕, 每次出问题,修复bug速度 .... 唉.
屹立 (作者)
我把版本更新到了 6.8.2.201512111923问题还是依旧?我要怎么办呢?
骁骑
是在IOS上还是Android上?
2015-12-16 19:08
屹立 (作者)
回复 骁骑:安卓
2015-12-17 13:29
屹立 (作者)
问题中的示例我把plus.stroage换成localStorage就正常了
2015-12-17 13:32
maq
【正常,JSON字符串】,这个能确定吗?能否给个实际的例子?
如果 json 字符串确实无误的话,JSON.parse() 出错的可能性极小。
屹立 (作者)
【正常,JSON字符串】这个正常只是指的弹出来的字符表面看着正常,但在下一步JSON.parse()出错估计是存入plus.stroage后出错了,使用localStroage代替plus.stroage后一切都正常
2015-12-17 13:31
maq
从你给出的代码看,【正常,JSON字符串】跟【JSON.parse(data)】是紧挨着的两行,中间没有别的代码呀。
2015-12-17 15:46
屹立 (作者)
没有
2015-12-17 17:05
屹立 (作者)
还是没结果吗??????
maq
还在问……那我就再重复一遍:
【正常,JSON字符串】,这个能确定吗?能否给个实际的例子?
屹立 (作者)
肯定正常,我也说过,当我换成localStroage就正常了,上面的问题里面的代码就是实例来的,至于JSON内容比较长就会弄出来,因为这个JSON不是那种简单的,比较复杂,如果说JSON有问题,也是存进plus.stroage后靠成的(用localStroage验证过了)
2015-12-19 17:35
路邊的貓
經過測試
裡面含有特殊字元
拉出來就會錯
蔡繁荣 - 发表是最好的记忆
SDK升级导致plus.storage存在bug,目前比较保险的方式是保存的时候加escape编码,取值的时候unescape解码。
前端开发亮仔
我也遇到这个问题了,不知道是不是您说的这个原因
2017-04-16 16:39
前端开发亮仔
不知道是plus.storage报错,还是取出来的数据用parse报错,但是存进去的的确是json
2017-04-16 16:43