簡體   English   中英

jQuery-將getJSON數據存儲到數組

[英]jQuery - getJSON data to array

您如何將從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/

如果我正確理解了您的問題,是否要緩存一些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];

只要確保您收到的JSON是一個數組即可。 將此JSON數組存儲到array中,並在需要時使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM