Javascript 在函数中访问全局字典

Javascript 在函数中访问全局字典,javascript,jquery,ajax,global,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 loa

我的网页使用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()]);
        }
因此,为了解释函数:函数获取item,它是由html初始化的,如下所示:
  • item
  • 。该函数检查项目的名称是否在
    加载的
    (键检查)中,如果不是,它将加载数据并将其保存到
    加载的

    问题陈述:但是,当单击某个项目时,我会出现以下错误:

    未捕获的TypeError:无法使用“in”运算符在未定义的中搜索“itemname”


    所以我在网上搜索,包括StackOverflow,寻找答案,但我偶然发现了答案,这个答案甚至没有给出一个血腥的答案(只是一个解释)!如何从我的函数访问
    全局变量'loaded'

    加载数组的内容类型是什么?您应该使用$.0吗?我是jQuery新手。您是否在其他地方使用变量名
    loaded
    ?它似乎认为变量是空的。它首先是空的,当加载一个项目时,它会保存在
    loaded
    中(请参阅
    ajax
    调用中的
    success
    部分)。我保存的正确吗?但是问题在于
    if
    部分,当一个项不存在时,它应该执行ajax。当然,您的
    if
    测试也是反向的。您需要添加一个
    (如果它不在缓存中,则要加载它)。当然,这并不能解决这里的问题。