屹立
屹立
  • 发布:2015-12-10 19:00
  • 更新:2015-12-24 08:37
  • 阅读:3529

从plus.storage取出来数据异常

分类:HTML5+

求解,昨天我更新了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就是正常的

2015-12-10 19:00 2 条评论 负责人:无 分享
已邀请:
stock2

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

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

maq

还在问……那我就再重复一遍:

【正常,JSON字符串】,这个能确定吗?能否给个实际的例子?

  • 屹立 (作者)

    肯定正常,我也说过,当我换成localStroage就正常了,上面的问题里面的代码就是实例来的,至于JSON内容比较长就会弄出来,因为这个JSON不是那种简单的,比较复杂,如果说JSON有问题,也是存进plus.stroage后靠成的(用localStroage验证过了)

    2015-12-19 17:35

路邊的貓

路邊的貓

經過測試
裡面含有特殊字元
拉出來就會錯

蔡繁荣

蔡繁荣 - 发表是最好的记忆

SDK升级导致plus.storage存在bug,目前比较保险的方式是保存的时候加escape编码,取值的时候unescape解码。

plus.storage.setItem(key, escape(JSON.stringify(queue_list)));  
queue_list = JSON.parse(unescape(queue_list));
  • 前端开发亮仔

    我也遇到这个问题了,不知道是不是您说的这个原因

    2017-04-16 16:39

  • 前端开发亮仔

    不知道是plus.storage报错,还是取出来的数据用parse报错,但是存进去的的确是json

    2017-04-16 16:43

该问题目前已经被锁定, 无法添加新回复