缓存在jquery中的json文件

时间:2013-07-05 06:02:32

标签: jquery arrays json

嗨所以我正在尝试构建一个缓存系统

这种方式的工作方式是,当用户点击它在该选项卡的json中加载的选项卡时 - 除了用户在选项卡上多次单击并且多次获取json之外,一切都正常工作 - 不是理想

所以我的想法是构建一个缓存,以便在第一次点击一个标签后,json被添加到缓存中并在下次从那里调用。

问题实际上是初始化缓存数组的位置,以便函数可以添加它。

显然我现在拥有它将意味着它在尝试调用getData函数时未定义。有人可以帮忙吗?这是代码

$(function() {
    var cache = {}; 
    $(".nav-tabs li a").on("click", function(){
        var tabID = $(this).attr("href");
        getData(tabID, applicationID);
    });
});

function getData(tabID, applicationID){
    tab = tabID.replace('#', '');
    var promise = this.cache[tab];

    if (!promise) {
        promise = getJSON(tab, applicationID);
        this.cache[name] = promise;
    }

    $.when(promise).then(function(result) {
    //do something!
    });

function getJSON (name, applicationID) {


    var promise =   $.ajax({
            url: 'data/' + name + '.json',
            method: 'get',
            dataType: 'json', 
            data: {appID:applicationID}
    });

    return promise;
}

1 个答案:

答案 0 :(得分:1)

一种方法是将cache声明为全局变量。

另一种方法是将getDatagetJSON的定义放在$(function() {...});内,这样它们就会与cache处于同一范围内。