2

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

这是我的代码

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>');
});

})
}

怎么了??

4

2 回答 2

0

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

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

我看到您每次设备准备就绪时都会调用 getJSON。如果您想在每次应用程序启动时刷新此数据,也许更好的办法是将 json 调用的结果缓存在全局 javascript 对象中,而不是多次字符串化和解析 json。

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

于 2013-04-15T16:26:26.133 回答
0

从 IOS 5.1 开始,Apple 决定将本地存储设为临时区域。在这里阅读更多

于 2014-01-07T22:08:53.303 回答