当我重新启动应用程序时,localStorage无法正常工作 - phonegap IOS

时间:2013-04-09 20:37:36

标签: iphone ios cordova

我正在尝试将jason数据缓存在本地存储上,以便在没有互联网连接时加载它正常工作但是当我重新启动应用程序时我认为localstorage已清除

这是我的代码

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {

    document.addEventListener("offline", function() {
    alert("No internet connection");


    $.each(JSON.parse(localStorage.getItem('foo')), function(key, val) {
    if(!(val.php)){val.php=0;}
$('ul.get-mertchant').append('<li> <a href="azkadenya.html?id=' + val.nid + '&nop='+ val.php +'" class="li-link"><div class="circle-img"><img src="'+ val.logo + '" /></div><div class="merchant-info"><h1>'+ val.node_title +'</h1><p>You Have '+ val.php +' Binggz</p></div><div class="more-icon"></div></a> </li>');
}); 

}, false);
    $.getJSON('mywebsite/views/services_merchant_mobile', function(data) {
        localStorage.setItem('foo', JSON.stringify(data));

var items = [];
$.each(JSON.parse(localStorage.getItem('foo')), function(key, val) {
    if(!(val.php)){val.php=0;}
$('ul.get-mertchant').append('<li> <a href="azkadenya.html?id=' + val.nid + '&nop='+ val.php +'" class="li-link"><div class="circle-img"><img src="'+ val.logo + '" /></div><div class="merchant-info"><h1>'+ val.node_title +'</h1><p>You Have '+ val.php +' Binggz</p></div><div class="more-icon"></div></a> </li>');
});

})
}

有什么不对?

2 个答案:

答案 0 :(得分:0)

您使用字符串化的json数据的大小是多少? Localstorage限制了值的大小,因此这可能是一个问题。

您是否在xcode控制台中有任何日志?

我看到每次设备准备好时都会调用getJSON。如果你想在每次应用程序启动时刷新这些数据,那么更好的办法就是在全局javascript对象中缓存json调用的结果,而不是多次使用stringify和解析json。

给你一个小小的提示。尽量不要以这种方式使用$ .append()函数。这在移动设备上非常昂贵。 您可以连接列表项,也可以只调用append()函数一次,或者您可以使用一些模板引擎,如jquery模板或把手。

答案 1 :(得分:0)

从IOS 5.1开始,Apple决定将本地存储设为临时区域。 Read more here