Javascript jQuery getJSON每个会话仅一次

Javascript jQuery getJSON每个会话仅一次,javascript,jquery,ajax,session,getjson,Javascript,Jquery,Ajax,Session,Getjson,我正在获取当前类似Facebook的计数,代码如下: $(document).ready(function() { $.getJSON('https://graph.facebook.com/<username>?callback=?', function(data) { var fb_count = data['likes'].toString(); $('#fb_count').html(fb_count); }); }); $(

我正在获取当前类似Facebook的计数,代码如下:

$(document).ready(function() {
    $.getJSON('https://graph.facebook.com/<username>?callback=?', function(data) {
        var fb_count = data['likes'].toString();
        $('#fb_count').html(fb_count);
    });
});
$(文档).ready(函数(){
$.getJSON('https://graph.facebook.com/?callback=?,函数(数据){
var fb_count=data['likes'].toString();
$('fb#u count').html(fb#u count);
});
});
但是,当用户浏览页面时,会再次发送请求。是否有一种方法可以在每个会话中只提取一次数据,并在用户关闭浏览器之前将提取的值保留在HTML元素中,而无需新的请求


谢谢你的帮助

是的,您可以使用
HTML5 localstorage

下面的代码可以帮助您

$(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;
        });
    }
});
$(文档).ready(函数(){
if(类型(存储)!=“未定义”&&localStorage.fb\u计数)
{
$('#fb_count').html(localStorage.fb_count);
}
否则{
$.getJSON('https://graph.facebook.com/?callback=?,函数(数据){
var fb_count=data['likes'].toString();
$('fb#u count').html(fb#u count);
if(类型(存储)!=“未定义”)
localStorage.fb_count=fb_count;
});
}
});
阅读


是的,你可以使用HTML5本地存储

下面的代码可以帮助您

$(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;
        });
    }
});
$(文档).ready(函数(){
if(类型(存储)!=“未定义”&&localStorage.fb\u计数)
{
$('#fb_count').html(localStorage.fb_count);
}
否则{
$.getJSON('https://graph.facebook.com/?callback=?,函数(数据){
var fb_count=data['likes'].toString();
$('fb#u count').html(fb#u count);
if(类型(存储)!=“未定义”)
localStorage.fb_count=fb_count;
});
}
});
阅读


您可以将计数存储在cookie中,并在请求之前检查cookie是否存在 ()

if($.cookie(“likeCount”)==null){
$.getJSON('https://graph.facebook.com/?callback=?,函数(数据){
var fb_count=data['likes'].toString();
$.cookie(“likeCount”,fb\u计数);
$('fb#u count').html(fb#u count);
});
} 
其他的
$('fb#u count').html($.cookie(“likeCount”));

[注意:未测试代码]

您可以将计数存储在cookie中,并在请求之前检查cookie是否存在
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());
}
()

if($.cookie(“likeCount”)==null){
$.getJSON('https://graph.facebook.com/?callback=?,函数(数据){
var fb_count=data['likes'].toString();
$.cookie(“likeCount”,fb\u计数);
$('fb#u count').html(fb#u count);
});
} 
其他的
$('fb#u count').html($.cookie(“likeCount”));
[注意:代码未测试]

var\u facebooker=new function(){
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());
}
var url='1〕https://graph.facebook.com/?callback=?', 阈值=3, sKey=“_facebooker”, 模式=(window.localStorage?“存储”:“jcookie”); 函数getData(){ 变量数据={}; 如果(模式==“jcookie”) data=JSON.pase($.cookie(sKey)); 其他的 data=JSON.parse(localStorage.getItem(sKey)); if(typeof data.expired\s==“undefined”| | data.expires
var\u facebook=new function(){
var url='1〕https://graph.facebook.com/?callback=?',
阈值=3,
sKey=“_facebooker”,
模式=(window.localStorage?“存储”:“jcookie”);
函数getData(){
变量数据={};
如果(模式==“jcookie”)
data=JSON.pase($.cookie(sKey));
其他的
data=JSON.parse(localStorage.getItem(sKey));

如果(数据类型。过期\s==“未定义”| | data.expires应该是sessionStorage而不是localStorage,因为他希望数据只在浏览器关闭之前保留sessionStorage将在浏览器关闭之前重置。应该是sessionStorage而不是localStorage,因为他希望数据只在浏览器关闭之前保留sessionStorage将在浏览器关闭之前重置s