2013-04-09 63 views
2

我想緩存jason數據在本地存儲加載它時沒有互聯網連接它工作正常,但是當我重新啓動應用程序我認爲localstorage清除localStorage不工作whins我重新啓動應用程序 - 電話IOS IOS

這裏是我的代碼

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

}) 
} 

什麼是錯的?

+0

你使用的是什麼版本的phonegap? – 2013-04-09 21:34:21

+0

@JasonFreitas我正在使用cordova 2.3.0 – 2013-04-09 21:36:35

+0

@JasonFreitas是否找出問題所在? – 2013-04-09 22:50:35

回答

0

什麼大小的json數據你stringify?本地存儲限制了值的大小,所以這可能是一個問題。

你有沒有在Xcode控制檯的任何日誌?

我發現每次設備準備就緒時都會調用getJSON。如果你想在每次應用程序啓動時刷新這些數據,最好的辦法是將json調用的結果緩存在全局javascript對象中,而不是多次對json進行字符串化和解析。

給你一個小提示。儘量不要以這種方式使用$ .append()函數。特別是在手機上,它非常昂貴。 你可以連接列表項並且只能調用append()函數一次,或者你可以使用一些模板引擎,比如jquery模板或handlebars。

相關問題