[英]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]);
});
})
看一下: 如何從$ .getJSON函數返回變量
如果我正確理解了您的問題,是否要緩存一些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.