2011-10-25 42 views
1

我已經看到了這個類似的職位,但我還沒有發現這種格式的循環鍵值對數組的一個例子:jQuery的迭代JSON - 一個未定義

{ 
"quotes": [ 
    { 
     "author": "Author One", 
     "quote": "Quote One" 
    }, 
    { 
     "author": "Author Two", 
     "quote": "Quote Two" 
    }, 
    { 
     "author": "Author Three", 
     "quote": "Quote Three" 
    } 
] 
} 

我不知道爲什麼這段代碼不工作,即當我嘗試迭代從Ajax調用返回的JSON數據時,我無法引用JSON文件中的指定數組,如data.quotes。如何循環引號陣列從阿賈克斯返回的數據調用

var QUOTE = { 
container: '#quote', 
url: 'quotes.json', 

load: function() { 
var _quote = this; 
$.ajax({ 
    type:"get", 
    url: this.url, 
    success: function(data){ 
    $.each(data.quotes, function(i, val) { 
     console.log(i, val); 
    }); 
    } 
}); 

這似乎是它應該工作,但我得到a is undefined$.each()電話。

感謝您的幫助,

Ĵ

+5

如果你的ajax調用實際上是返回你提交的數據,那麼'data.quotes'就是一個對象數組。因此,每個'$ .each()'調用將遍歷該數組,並且'each()'回調內的參數'val'將是一個對象。如果你在'each()'調用中遇到錯誤,那麼data.quotes可能不是你所期望的。你應該在調試器中打破它並檢查數據是什麼。 – jfriend00

+0

你是否在壓縮你的代碼? – icktoofay

回答

3

似乎是沒有錯的代碼。 val.authorval.quote應該包含你所期望的。

有沒有變量叫a所以錯誤來自哪裏?

我的猜測是數據不是你所期望的。嘗試console.log(data);看看是否正確。

檢查它是否是字符串或對象。您可能需要data = $.parseJSON(data)將字符串轉換爲數據結構。

+0

console.log(data)顯示了quotes.json文件的內容,但console.log(data.quotes)未定義。 – neridaj

+0

數據是字符串還是對象?我給答案增加了一個建議。 –

+0

我有一個類似的問題,我不得不刪除[] json字符串,以便能夠引用它像data.quotes – Arnoldiusss