ajax发布了多个输入组

时间:2012-03-01 14:43:32

标签: javascript jquery ajax forms post

我有一个包含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列表。我确定这是可能的,但我只是错过了它。

感谢。

2 个答案:

答案 0 :(得分:3)

jQuery.serialize()函数可用于编码整个表单的内容以进行提交。您可以在AJAX请求中使用编码字符串,如下所示:

$.ajax({
    url: "/some-url",
    type: "POST",
    data: $("#some-form").serialize() // returns name-value pairs, encoded as form data
});

答案 1 :(得分:0)

不知何故,他们在使用时遇到了问题:

url: "/foldername/file.php",

因为我必须始终使用:

url: "foldername/file.php",,