[英]logic to parse json data failing
我有以下json數據:
[{"id":"1","name":"vm"},{"id":"2","name":"live"}]
這是我要解析的代碼:
$.getJSON('<%= path to my method%>',function(data) {
console.log(data);
$.each(data, function(i, item) {
console.log(item[i].id);
console.log(item[i].name);
}); //end .each
});//end getJSON.
以下是控制台中的結果:
LOG: [{"id":"1","name":"vm"},{"id":"2","name":"live"}]
LOG: undefined
LOG: undefined
SCRIPT5007: Unable to get value of the property 'id': object is null or undefined
我發現這篇文章: 使用$ .each對json數據進行jquery循環
所以我試着改變我的代碼看起來像:
function(data) {
console.log(data);
$.each(data, function(i, item) {
console.log(data[i].id);
console.log(data[i].name);
}); //end .each
和這個:
function(data) {
console.log(data);
$.each(data, function(i, item) {
console.log(item.id);
console.log(item.name);
}); //end .each
但我一直都沒有為ids和名字定義。
你能告訴我哪里出錯嗎? 謝謝。
編輯1
function(data) {
$.parseJSON(data);
console.log(data);
$.each(data, function(i, item) {
console.log(item.id);
console.log(item.name);
}); //end .each
IIRC
$.each(data,function(i,item)
應該
$.each(data,function(i)
然后你可以在循環中使用this.id和this.name。 即使你的解決方案證明是有效的,使用我的解決方案仍然會更快,因為使用數據[i]將比使用'this'更慢
當你使用.each
, i
是索引, item
是值。 無需像item[i]
,就像你在for..in
。
$.each(data, function(i, item) {
console.log(item.id);
console.log(item.name);
});
嘗試這個:
$.each(data, function() {
console.log(this.id);
console.log(this.name);
});
您的JSON是作為字符串而不是JSON對象傳遞的,因此您無法訪問其屬性。
使用$.parseJSON()
將JSON字符串轉換為實際對象。
data = $.parseJSON(data);
以上應該可以解決問題。
如果您的JSON源可能不可靠,我建議使用try / catch塊來防止無效的JSON加密您的javascript:
try {
data = $.parseJSON(data);
} catch(errors) {
console.log(errors);
}
最后,如果您控制JSON的源代碼,則可以在對application/json
的響應中設置標頭,jQuery應該自動將響應轉換為JSON對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.