如何将从jQuery getJSON接收的数据存储到数组中供以后使用?
以下是一个示例代码段 - 不知道循环的data
是否未存储到全局haikus
。
$(document).ready(function(){
var haikus=[];
alert("begin loop");
$.getJSON('http://haikuennui.com/random.php',function(data){
var i=0;
for(i=0;i<data.length;i++){
haikus[i]=[data[i].id,String(data[i].username),String(data[i].haiku)];
}
alert(haikus[0][1]);
});
})
答案 0 :(得分:2)
答案 1 :(得分:1)
如果我正确理解你的问题,你想要缓存一些AJAX检索的项目吗?
所以,如果所有项目都是这样,请说:
{ id: 1, value: 'Test' }
...如果你已经做过一次,你不想让AJAX获取ID = 1的值......?
在这种情况下,在全局范围内的某处声明缓存变量:
var ajaxCache = {};
检索功能成功后,添加到它:
ajaxCache['item' + item.id] = item;
完成后,您可以修改检索功能:
if(('item' + id) in ajaxCache) {
return ajaxCache['item' + id];
}
// continue to fetch 'id' as it didn't exist
应该注意,这实际上不是一个数组。我没有使用数组的原因是,使用ID 2000分配项目将使数组的长度为2001,而不是仅向其添加属性。因此,无论您如何处理它,从0到array.length
的迭代永远不会是获取所有项目的好方法(在这个特定的上下文中,这是数组和对象之间的差异很重要的唯一方案)
相反,要迭代此对象,您需要编写
for(var key in ajaxCache) {
var item = ajaxCache[key];
// whatever you want to do with 'item'
}
哦,并删除一个对象:
delete ajaxCache['item' + id];
答案 2 :(得分:0)
确保您收到的JSON是一个数组。将此JSON数组存储到数组中,并随时使用。