访问函数中的全局字典

时间:2015-12-31 16:13:51

标签: javascript jquery ajax global

我的网页使用ajax请求来获取商店中不同商品的信息。但是,截至目前,每次单击某个项目(即使是同一项目)时,它都会重新加载数据,这是不必要的,因为数据有些静态。所以我试着像这样解决问题;

var loaded = {}; //save loaded items in dictionary, so it is not necessary to load them again.

    function loaditem(item){
        if(item.text() in loaded){
            postdata = {
                item: item.text()
            };
            $.ajax({
                type: "POST",
                url: "iteminfo/fetch.php",
                data: postdata,
                dataType: "json",
                success: function(data) {
                    loaddata(data);
                    loaded[item.text()] = data; //item.text() is the name of the item in this case
                },
                error: function() {
                    console.log('Something went wrong');
                }
            });
        } else {
            loaddata(loaded[item.text()]);
        }

所以解释一下这个函数:函数获取项目,这个项目由html推断,如:<li onclick="loaditem($(this))">item</li>。该函数检查项目的名称是否在loaded(密钥检查)中,如果不是,它将加载数据并将其保存到loaded

问题陈述:但是,当点击某个项目时,我收到此错误:

  

未捕获的TypeError:无法在&#39;中使用&#39;运营商搜索&quot; itemname&#39;未定义

所以我搜索了网络,包括StackOverflow,以获得答案,但我偶然发现了this的答案,甚至对这个问题给出了一个血腥的答案(只是一个解释)!如何从我的功能中访问global var 'loaded'

0 个答案:

没有答案