无法通过添加src获取信息

时间:2015-09-27 17:34:36

标签: javascript

  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来获取数据?

2 个答案:

答案 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)