2

インターネットに接続していないときにジェイソンデータをローカルストレージにキャッシュしてロードしようとしていますが、アプリを再起動すると、ローカルストレージがクリアされたと思います

ここに私のコードがあります

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

IOS 5.1 以降、Apple はローカル ストレージを一時領域にすることを決定しました。詳細はこちらをご覧ください

于 2014-01-07T22:08:53.303 に答える
0

文字列化する json データのサイズは? Localstorage には値のサイズに制限があるため、これが問題になる可能性があります。

xcode コンソールにログはありますか?

デバイスの準備が整うたびに getJSON を呼び出しているようです。アプリケーションが起動するたびにこのデータを更新したい場合は、json を何度も文字列化して解析するのではなく、json 呼び出しの結果をグローバル javascript オブジェクトにキャッシュすることをお勧めします。

あなたへの小さなヒント。このように $.append() 関数を使用しないようにしてください。特にモバイルでは非常に高価です。リスト項目を連結して append() 関数を 1 回だけ呼び出すか、jquery テンプレートやハンドルバーなどのテンプレート エンジンを使用できます。

于 2013-04-15T16:26:26.133 に答える