gpt4 book ai didi

javascript - 将 Json 存储在 localStorage 中

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:36:23 25 4
gpt4 key购买 nike

我想将搜索结果作为缓存存储在 localStorage 中。

我想将所有缓存存储为一个 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>');
});

}

最佳答案

你的逻辑有一些漏洞。

var cache = JSON.parse(localStorage.getItem("..."));
if (cache == null) { cache = "[{}]"; }

好吧,如果项目 DID 存在,那么您已经将缓存设置为等于该对象。
否则,您已将缓存设置为等于字符串 "[{}]"

与其考虑如何构建本地存储,不如考虑如何构建结果列表。

var cache_json = localStorage.getItem("search-cache"),
search_cache = JSON.parse(cache_json) || {};

var query = $("...").value(); // or whatever

search_cache[query] = search_cache[query] || { results : [] };

var list = $(......)
list.each(function () {
search_cache[query].results.push( /* whatever you want in your array */ );
});


cache_json = JSON.stringify(search_cache);
localStorage.setItem("search-cache", query_json);

关于javascript - 将 Json 存储在 localStorage 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15043978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com