如何为json对象编写索引循环

时间:2010-10-05 16:17:37

标签: javascript jquery json loops indexing

我有一个图像更新程序。我正在通过JSON加载显示我的图像的完全相同的文件/部分。

我想编写一个遍历索引的循环,并用相等的方式替换每个图像。

这是我的json对象中的第一个div:

[{
  "photo": {
    "position":1,
    "photo_file_size":45465,
    "created_at":"2010-10-05T09:51:13-04:00",
    "updated_at":"2010-10-05T09:52:29-04:00",
    "photo_file_name":"tumblr_l0x861Yc5M1qbxc42o1_400.jpg",
    "is_cropped":true,
    "crop_h":null,
    "photo_content_type":"image/jpeg",
    "id":216,
    "caption":null,
    "crop_w":null,
    "photo_uploaded_at":null,
    "crop_x":null,
    "processing":false,
    "gallery_id":26,
    "crop_y":null
  }
},
...

json对象中的下一个div就像gallery_photos_attributes_1_id

更新

这是我到目前为止所做的..但load()方法无法正常工作。我得到了“只允许获得请求”

$.getJSON(url, function(data) {
for (var i = 0; i < data.length; i ++) {
  url2 = "/organizations/" + 1 + "/media/galleries/" + 26 + "/edit_photo_captions"
  var image = $("#gallery_photos_attributes_" + i + "_caption");
url_str = image.siblings("img").attr("src").substr(0, str.lastIndexOf("/"));
image.siblings("img").load(url2, image.siblings("img"));
};
})

1 个答案:

答案 0 :(得分:1)

虽然我不是100%我帮你做对了,试试这段代码。

var url = "/organizations/" + organization + "/media/galleries/" + gallery + "/update_photo_index"
$.getJSON(url, function(data) {
  // the outer is an array, so just loop as usual
  for (var i = 0; i < data.length; i++) {
    // fetch something for the current photo
    var caption = $("#gallery_photos_attributes_"+ data[i].photo.id +"_caption");
    // update source
    caption.siblings("img").attr("src","/path/to/images/"+data[i].photo.photo_file_name+"?c="+parseInt(Math.random()*10000));
    // update caption
    caption.html(data[i].photo.caption);
    // and so on...
  }
});

请记住,在JSON中,“[...]”描述了一个数组,而“{...}”描述了一个对象。使用数组,您可以像其他每个javascript数组一样循环。如果你有一个对象,它就像任何其他javascript对象,其字段可以通过object.field或object ['field']访问。所以在javascript中使用JSON几乎是不费脑子的。

希望有所帮助。