【发布时间】:2012-03-20 01:33:48
【问题描述】:
我有一个包含 4 组复选框的表单,用于优化搜索结果。我希望能够为每个复选框组发布一个数组,其中包含当前勾选的复选框的 id。
$.ajax({
url: "/stay_in_belfast/accommodation",
type: "POST",
data: {
subcategory_ids:$(":checkbox[name^='subcategory_ids[']").serialize(),
rating_ids:$(":checkbox[name^='rating_ids[']").serialize(),
location_ids:$(":checkbox[name^='location_ids[']").serialize(),
facility_ids:$(":checkbox[name^='facility_ids[']").serialize()
},
success: function( data ) {
}
});
当我发布此内容时,尽管我的数组包含预期的四个变量,但数据如下所示:
subcategory_ids%5B%5D=22&subcategory_ids%5B%5D=23&subcategory_ids%5B%5D=24&subcategory_ids%5B%5D=26&subcategory_ids%5B%5D=27&subcategory_ids%5B%5D=28
如果我使用 serializeArray,四个 post 变量中的每一个都包含一个名称配对数组,其中包含输入名称和值。但是,输入名称始终是该组输入的组名称,因此对我没有实际用处。如果我尝试这样做,只需发送一组,例如
$.ajax({
url: "/stay_in_belfast/accommodation",
type: "POST",
data: $(":checkbox[name^='subcategory_ids[']").serialize(),
success: function( data ) {
}
});
它将帖子显示为 id 的数组。我无法弄清楚为什么它会有所不同,具体取决于我是通过单个分组发布还是通过四个分组发布。
基本上,我在帖子中想要的只是 4 个由其输入组标识的数组,每个数组都包含一个 id 列表。我确信这是可能的,但我只是想念它。
谢谢。
【问题讨论】:
-
我不知道是什么导致了你的问题,但我可以想到一些事情来尝试:1.在调用之外单独创建数据对象,并将其传入。2.序列化整个结构,而不是单个属性。
-
你试过
$("form#some_form_id").serialize()吗? -
干杯@SalmanA。对整个表单进行序列化效果很好。谢谢。
-
你展示的是标准的urlencoded表单数组格式,你需要json数组还是???需要更多细节
标签: javascript jquery ajax forms post