Javascript 在函数中访问全局字典
我的网页使用ajax请求获取我的商店中不同商品的信息。但是,到目前为止,每次单击一个项目(即使是同一个项目),它都会重新加载数据,这是不必要的,因为数据有些静态。所以我试着像这样解决这个问题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
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
测试也是反向的。您需要添加一个代码>(如果它不在缓存中,则要加载它)。当然,这并不能解决这里的问题。