2009-07-24 47 views
0

我有一个商店的管理页面,用户可以修改商品数据。我试图为管理员添加和删除图像,方法是将它们拖放到div上。如何使用JQuery嵌套JSON?

$("#saveButton").click(function() { 
    $("form *, button").attr("disabled", "true"); 
    formData = $("#itemForm").formHash(); 
    formData["item"] = $("#itemSelector option:selected").val(); 
    formData["action"] = "save"; 
    formData["images"] = {}; 
    $("#otherImages img").each(function(i){ 
     formData["images"][i] = $(this).attr("src"); 
    }); 
    $.ajax({ 
     type: "POST", 
     url: "adminajax.php", 
     data: formData 
    }); 
}); 

在这里,“图像”值将被提交为“[对象的对象]”:

,直到我添加了“图像”对象的组合如下,我可以提交数据就好了。

我希望“图像”是服务器上的关联数组。

一个解决方法是只需要几个图像键:“image1:source”,“image2:source”等,但是,如果它可以是一个对象,那么我真的可以做一个for-each “图像”而不是过滤关键字符串。

+0

你可以解雇多次呢?海事组织最好有一个原子操作。 – 2009-07-24 15:17:10

回答

2

阅读来自data选项$就请求的文档:

如果值是一个数组,jQuery的序列化具有相同的密钥,即多个值{富:“BAR1”,“BAR2”]}变成'& foo = bar1 & foo = bar2'。

所以,你的例子可以写成:

formData['images'] = $.map($("#otherImages img"), function(i) { 
    return $(i).attr("src"); 
}); 

或者,如果你使用PHP,你就必须这样做,因为分配,而不是:

formData['images[]'] = ...; 
+1

伟大,精美的作品。 – 2009-07-24 16:15:47