我有一个商店的管理页面,用户可以在其中修改商品数据。我正在尝试为管理员实现一些东西,通过将它们拖放到div中来添加和删除图像。
我可以提交数据,直到我将“images”对象添加到混合中,如下所示:
$("#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
});
});
此处,“images”值以“[object Object]”提交。
我想让“images”成为服务器上的关联数组。
一个解决方法是简单地拥有几个图像键:“image1:source”,“image2:source”等,但是,如果它可以是一个对象,那么我真的很好,这样我就可以做一个for-each on“图像“而不是过滤关键字符串。
答案 0 :(得分:2)
阅读$ .ajax请求的data选项的文档:
如果value是一个数组,jQuery使用相同的键序列化多个值,即{foo:[“bar1”,“bar2”]}变为'& foo = bar1& foo = bar2'。
所以你的例子可以写成:
formData['images'] = $.map($("#otherImages img"), function(i) {
return $(i).attr("src");
});
或者,如果您使用的是PHP,则必须执行此操作:
formData['images[]'] = ...;