如何使用JQuery发布嵌套JSON?

时间:2009-07-24 15:11:11

标签: javascript jquery

我有一个商店的管理页面,用户可以在其中修改商品数据。我正在尝试为管理员实现一些东西,通过将它们拖放到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“图像“而不是过滤关键字符串。

1 个答案:

答案 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[]'] = ...;