在此示例中,您可以看到生成的 HTML 列表。每次刷新时,脚本都会请求数据文件 (ajax/test.json) 并再次构建列表。
生成的文件“ajax/test.json”被静态缓存。但是我怎样才能避免在每次刷新时都请求这个文件呢?
// source: jquery.com
$.getJSON('ajax/test.json', function(data) {
var items = [];
$.each(data, function(key, val) {
items.push('<li id="' + key + '">' + val + '</li>');
});
$('<ul/>', {
'class': 'my-new-list',
html: items.
}).appendTo('body');
});
这不起作用:
list_data = $.cookie("list_data");
if (list_data == undefined || list_data == "") {
$.getJSON('ajax/test.json', function(data) {
list_data = data;
});
}
var items = [];
$.each(data, function(key, val) {
items.push('<li id="' + key + '">' + val + '</li>');
});
$('<ul/>', {
'class': 'my-new-list',
html: items.
}).appendTo('body');
提前致谢!
最佳答案
promise 如何?
var list_data = localStorage.getItem("list_data"),
def = $.Deferred();
if (!list_data) {
def = $.getJSON('ajax/test.json', function(data) {
list_data = data;
localStorage.setItem("list_data", JSON.stringify(list_data));
});
}else{
list_data = JSON.parse(list_data);
def.resolve();
}
def.done(function() {
var items = [];
$.each(list_data, function(key, val) {
items.push( $('<li />', {id: key, text: val}) );
});
$('<ul/>', {'class': 'my-new-list'}).html(items).appendTo('body');
});
我也只使用本地存储,如果要支持 IE7 或更低版本,请使用 MDN 上可用的填充程序!
关于javascript - jQuery.getJSON : how to avoid requesting the json-file on every refresh?(缓存),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13853016/