jQuery - getJSON数据到数组

时间:2010-08-09 08:00:03

标签: javascript jquery

如何将从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]);
    });
})
​

http://jsfiddle.net/DMU2v/

3 个答案:

答案 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数组存储到数组中,并随时使用。