success: function(d)
{
for (var o in d) {
alert(d[o]);
}
这是ajax的一部分,我想用"用于"获取信息。
"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 :(得分:3)
使用hasOwnProperty
并检查值:
d = JSON.parse(d);
for (var o in d) {
if (d.hasOwnProperty(o)) {
alert(d[o].src);
}
}
在大多数情况下,您可能会将o
值视为length
等等。如果您确定它将是一个数组而不是一个对象(即,不是一个命名的对象) ),你可以很好地做到这一点:
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);
答案 1 :(得分: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'
,或使用d = JSON.parse(d)
或d = $.parseJSON(d)