我有一个图像更新程序。我正在通过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"));
};
})
答案 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几乎是不费脑子的。
希望有所帮助。