不能从添加src获取信息


  success: function(d) 
        {
        for (var o in d) {
            alert(d[o]);
        }

这是ajax的一部分,我想用"for"来获取里面的信息。

"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);

它返回未定义,怎么可能我不能得到数据只是通过使用添加SRC ?

使用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);

当迭代确认对象具有该属性时,使用 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);
})

更新:也检查你添加了dataType:'json'在你的ajax代码,或解析json数据在ajax成功回调使用d = JSON.parse(d)d = $.parseJSON(d)

最新更新