検索結果をキャッシュとしてlocalStorageに保存したいと思います。
すべてのキャッシュを1つのlocalStorage値として保存したいと思います。
localStorage.getItem('search-cache')
その中に、プロパティを追加して取得できるJSONオブジェクトが必要です。残念ながら、それは機能せず、localStorageはjsonの結果で更新されません(その値は継続します'{}'
)。
私はJavaScriptの専門家ではないので、うまくやる方法を教えてください。
結果をキャッシュするための現在のコードは次のとおりです。
var query = $(this).val();
var cache = JSON.parse(localStorage.getItem('search-cache'));
if (cache == null) {
cache = '[{}]';
}
if (cache[query] == null) {
$.getJSON('/api/guides/search?query=' + query, function (data) {
$.each(data, function (index, guide) {
$('#results').append('<li class="result-item">' + guide.Name + '</li>');
});
cache[query] = data;
localStorage.setItem('search-cache', JSON.stringify(cache));
});
}
else {
$.each(JSON.parse(localStorage.getItem('search-cache')[query]), function (index, guide) {
$('#results').append('<li class="result-item">' + guide.Name + '</li>');
});
}