Mr.*_* B. 4 javascript jquery json caching getjson
在此示例中,您可以看到生成的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');
});
Run Code Online (Sandbox Code Playgroud)
这不起作用:
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');
Run Code Online (Sandbox Code Playgroud)
提前致谢!
怎么回事?
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');
});
?
Run Code Online (Sandbox Code Playgroud)
我也只使用本地存储,如果要支持IE7或更低版本,请使用MDN上提供的垫片!