我的网页使用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'
?