2015-09-27 60 views
1
success: function(d) 
     { 
     for (var o in d) { 
      alert(d[o]); 
     } 

這是阿賈克斯的一部分,我想用「爲」進去的信息。不能加入SRC從剛剛獲得的信息

"img1":{"num":"1","src":"Img/House1/Image1.png", 
"name":"Image1.png"},"img2":{"num":"2","src":"Img/House2/Image2.png", 
"name":"Image2.png"}, 

,如果我嘗試使用來獲取數據

alert(d[o].src); 

它返回undefined,這怎麼可能,我不能用增加的src得到的數據只是?

+0

你是什麼意思,通過使用添加src? – 2015-09-27 17:38:03

回答

3

使用hasOwnProperty並檢查值:

d = JSON.parse(d); 
for (var o in d) { 
    if (d.hasOwnProperty(o)) { 
    alert(d[o].src); 
    } 
} 

在大多數時候,你可能會得到olength等。而如果你是絕對肯定這是會是一個數組,而不是一個對象(即不是一個名爲),可以很好地做到這一點:

for (i = 0; i < d.length; i++) { 
    alert(d[i].src); 
} 

片段

var data = { 
 
    "img1": { 
 
    "num": "1", 
 
    "src": "Img/House1/Image1.png", 
 
    "name": "Image1.png" 
 
    }, 
 
    "img2": { 
 
    "num": "2", 
 
    "src": "Img/House2/Image2.png", 
 
    "name": "Image2.png" 
 
    } 
 
} 
 

 
;(function (d) { 
 
    for (var o in d) { 
 
    if (d.hasOwnProperty(o)) { 
 
     alert(d[o].src); 
 
    } 
 
    } 
 
})(data);

隨着for

var data = [ 
 
    { 
 
    "num": "1", 
 
    "src": "Img/House1/Image1.png", 
 
    "name": "Image1.png" 
 
    }, 
 
    { 
 
    "num": "2", 
 
    "src": "Img/House2/Image2.png", 
 
    "name": "Image2.png" 
 
    } 
 
] 
 

 
;(function (d) { 
 
    for (i = 0; i < d.length; i++) { 
 
    alert(d[i].src); 
 
    } 
 
})(data);

+0

我嘗試使用f(d.hasOwnProperty(o))之前它仍然給我未定義。 – Hacktor

+0

這段代碼是否適合你@Hacktor?這是什麼預期的行爲?檢查控制檯中的問題。 –

+0

這是正確的方式來獲取我知道的數據,但我試過你的代碼,我仍然有未定義,但我可以得到d [o],只是不是如果我添加src。即使使用hasOwnProperty。 – Hacktor

2

雖然迭代確認對象具有屬性,使用hasOwnProperty()方法,對於更多有關處理與對象訪問https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects

var d = { 
 
    "img1": { 
 
    "num": "1", 
 
    "src": "Img/House1/Image1.png", 
 
    "name": "Image1.png" 
 
    }, 
 
    "img2": { 
 
    "num": "2", 
 
    "src": "Img/House2/Image2.png", 
 
    "name": "Image2.png" 
 
    } 
 
} 
 

 
for (var o in d) { 
 
    if (d.hasOwnProperty(o)) { 
 
    alert(d[o].src); 
 
    } 
 
}

另一種可能的方法是使用Object.keys()forEach()Object.keys()會檢索所有對象鍵作爲一個數組,迭代後超過他們,然後使用檢索值的鍵

var d = { 
 
    "img1": { 
 
    "num": "1", 
 
    "src": "Img/House1/Image1.png", 
 
    "name": "Image1.png" 
 
    }, 
 
    "img2": { 
 
    "num": "2", 
 
    "src": "Img/House2/Image2.png", 
 
    "name": "Image2.png" 
 
    } 
 
} 
 

 
Object.keys(d).forEach(function(o) { 
 
    alert(d[o].src); 
 
})

更新:此外,檢查你在你的Ajax代碼添加dataType:'json' ,或解析JSON數據成功回調使用d = JSON.parse(d)d = $.parseJSON(d)

+0

我嘗試使用f(d.hasOwnProperty(o) )之前它仍然給我未定義。 – Hacktor

+0

嘗試'console.log(d [0])',並在控制檯 –

+0

「img1」:{「num」:「1」,「src」:「Img/House1 /image1.png「,」name「:」Image1.png「}, – Hacktor