我正在开发一个使用html / javascript框架的应用。 当页面显示如下时,应用程序使用PHP脚本和$ .get调用从数据库的页面加载:
// Set lastTime var for counting the amount of time passed since $.get
var lastTime = 0;
// Amount of minutes before new $.get
var timeOut = 1;
// Cache
var cache = [];
function load_page(page, location) {
// Check if 1 minute passed
if ( Math.floor((new Date() - lastTime)/60000) < timeOut ) {
// Get cache
$(location+' .homeText').html(cache[page]);
} else {
// Get URL
$.get('http://mydomain.com/get_posts.php?page='+page, function(data) {
$(location+' .homeText').html(data);
});
// Fill array with data
cache.push();
// Set lastTime var for checking how long since URL fetch
lastTime = new Date();
}
}
它已接近完成但我无法弄清楚如何填充我的cache
变量。
我希望以这样的方式填充它,以便我可以使用page
变量作为关键来保持一切尽可能动态。我知道如何用数据填充数组,但我无法弄清楚如何给它一个特定的键和值。
答案 0 :(得分:2)
像这样的东西
var cache = {};
从缓存中获取
if (cache[page] !== undefined) {...
填充缓存
cache[page] = data;
答案 1 :(得分:1)
在Javascript中,大多数人会使用一个简单的Object来模仿关联数组的行为。
首先,将您的cache
定义更改为空对象:
// Cache
var cache = {};
然后,当您想保存加载的HTML时,只需执行以下操作:
cache[page] = data;
现在,虽然您没有指定,但我认为您的逻辑中也有一个错误 - 您只有一个lastTime
变量,但我认为您将分别为每个保留1分钟的计时器潜在的页面加载。在这种情况下,你可能会有更像这样的东西:
cache[page] = {
html: data,
expires: new Date().getTime() + 60000
};
为了说清楚,以下是我如何重写您的功能片段,使用cache
对象来存储HTML数据和数据到期的时间。
// Cache
var cache = [];
function load_page(page, location) {
var now = new Date().getTime();
// Check for a previously cached value
var result = cache[page];
if (result && result.expires > now) {
// Use the cached HTML data
$(location + ' .homeText').html(result.data);
} else {
// Get URL
$.get('http://mydomain.com/get_posts.php?page=' + page, function (data) {
$(location + ' .homeText').html(data);
// Store the HTML and its expiration time
cache[page] = {
data: data,
expires: now + 60000
};
});
}
}
答案 2 :(得分:0)
JavaScript中没有关联数组这样的东西。 Here是一篇关于此问题的有趣博文:http://blog.kevinchisholm.com/...
但你可以这样想:
cache.push({键:值,键:值});
答案 3 :(得分:0)
或者,如果由于任何原因您必须使用数组cache
,那么您将使用以下内容:
// Set lastTime var for counting the amount of time passed since $.get
var lastTime = 0;
// Amount of minutes before new $.get
var timeOut = 1;
// Cache
var cache = [];
function load_page(page, location) {
// Check if 1 minute passed
if ( Math.floor((new Date() - lastTime)/60000) < timeOut ) {
// Get cache
$(location+' .homeText').html(cache[page]);
} else {
// Get URL
$.get('http://mydomain.com/get_posts.php?page='+page, function(data) {
$(location+' .homeText').html(data);
// Fill array with data
var oPage = {};
oPage[ page ] = data;
cache.push( oPage );
// Set lastTime var for checking how long since URL fetch
lastTime = new Date();
});
}
}