0
我已經在Cordova中構建了一個應用程序,它最初將用於IOS,但最終需要在Android和桌面上工作。在線時我需要請求JSON文件並緩存JSON以便在脫機時使用。我正在使用Cordova並使在線/離線事件偵聽器正常工作。應用程序開發 - 在線時緩存JSON文件 - AJAX
這似乎與下面的簡單代碼工作:
var cache = JSON.parse(localStorage.getItem('cache'));
if (!cache) $.getJSON('http://example.com/JSON/', function (data) {
cache= localStorage.setItem('cache', JSON.stringify(data));
});
然而,應用程序是不是比多了幾分複雜,使得動態AJAX調用和我奮力知道如何處理動態URL的高速緩存,其根據類別顯示不同的數據。經過對動態變量的一些研究後,我想出了下面的代碼,但是這不起作用,因爲同一個緩存文件用於App中的所有類別,並且當我將「cache」var打印到控制檯時,我得到NULL。
var cat = (this.getAttribute('data-cat'));
//get cached JSON
var cache = {};
cache['category-' + cat] = JSON.parse(localStorage.getItem(cache['category-' + cat]));
//check if online and not cached - could make this more complex and only do the Ajax call daily
if((online===true)&&(!cache['category-' + cat])){
//get JSON
$.getJSON(baseurl+'/wp-json/app/v2/files?filter[category]='+cat+'&per_page=100', function(jd) {
//cache JSON
var cache = {};
cache['category-' + cat] = localStorage.setItem(cache['category-' + cat], JSON.stringify(jd));
cache.date = currentTimestamp;
});
} else if((online===false)&&(!cache['category-' + cat])){
alert('There are no cached files. You need to be online.');
}
console.log(JSON.parse(localStorage.getItem('cache')));
任何人都可以看到我做錯了什麼?
是的工作 - 非常感謝你! – LeeTee