jQuery每个会话只获取JSON一次
jQuery getJSON only once per session
我用这样的代码获取当前类似Facebook的计数:
$(document).ready(function() {
$.getJSON('https://graph.facebook.com/<username>?callback=?', function(data) {
var fb_count = data['likes'].toString();
$('#fb_count').html(fb_count);
});
});
但是,当用户浏览页面时,会再次发送请求。是否有一种方法可以在每次会话中只获取一次数据,并在没有新请求的情况下将获取的值保留在HTML元素中,直到用户关闭浏览器?
谢谢你的帮助!
是的,可以使用HTML5 localstorage
、
Below code
可能会帮助你,
$(document).ready(function() {
if(typeof(Storage)!=="undefined" && localStorage.fb_count)
{
$('#fb_count').html(localStorage.fb_count);
}
else{
$.getJSON('https://graph.facebook.com/<username>?callback=?', function(data) {
var fb_count = data['likes'].toString();
$('#fb_count').html(fb_count);
if(typeof(Storage)!=="undefined")
localStorage.fb_count=fb_count;
});
}
});
读取http://www.w3schools.com/html/html5_webstorage.asp
而且http://www.w3.org/TR/webstorage/
您可以将计数存储在cookie中,并在请求之前检查cookie的存在(如何使用jQuery设置/取消设置cookie?)
if( $.cookie("likeCount") === null ){
$.getJSON('https://graph.facebook.com/<username>?callback=?', function(data) {
var fb_count = data['likes'].toString();
$.cookie("likeCount", fb_count);
$('#fb_count').html(fb_count);
});
}
else
$('#fb_count').html($.cookie("likeCount"));
【注:代码未测试】
var _facebooker = new function() {
var url = 'https://graph.facebook.com/<username>?callback=?',
threshold = 3,
sKey = "_facebooker",
mode = (window.localStorage ? "storage" : "jcookie");
function getData(){
var data = {};
if (mode === "jcookie")
data = JSON.pase($.cookie(sKey));
else
data = JSON.parse(localStorage.getItem(sKey));
if (typeof data.expired's == "undefined" || data.expires <= new Date())
return getNewData();
else
return data;
}
function setData(d){
if (mode === "jcookie")
$.cookie(sKey, JSON.stringify(d));
else
localStorage.setItem(sKey, JSON.stringify(d));
return d;
}
function getNewData(){
var data = {};
$.getJSON(url, function(d){
data = {
likeCount: d['likes'],
expires: new Date((new Date()).getTime() + threshold * 60000)
};
setData(data);
});
return data;
}
function getLikeCount(){
return getData().likeCount;
}
return {
"getLikeCount" : getLikeCount
}
}
$(document).ready(function() {
$('#fb_count').html(_facebooker.getLikeCount());
}
相关文章:
- 如何使用 Node JS 获取 JSON 嵌套数组值
- 使用Javascript/JQuery获取JSON GET数据
- 在jQuery中获取JSON
- 如何使用jQuery按键搜索和获取json行数据
- 如何使用jquery获取Json的节点
- 通过字符串获取JSON对象
- 通过Azure存储以HTML形式获取JSON文件
- 获取JSON并使用Javascript解析为字符串
- 如何在angular中获取json对象的名称
- 如何使用angular获取json对象的名称
- 如何使用Ajax JQuery.ech()获取JSON值
- 可以't通过从googlemapapi获取json值
- 获取json结果的身份验证问题
- Javascript:获取 JSON 中的值计数
- 按服务获取JSON数据
- 如何使用javascript获取json元素
- 从javascript文件中获取JSON,并使用NodeJS在路由文件中显示
- 如何从给定的代码中获取JSON对象
- 获取 JSON 数据将数组项添加到变量
- 如何从具有动态可观察属性的淘汰对象中获取 JSON 字符串