Ajax опубликовать несколько групп ввода - PullRequest
1 голос
/ 01 марта 2012

У меня есть форма с 4 группами флажков, используемых для уточнения результатов поиска. Я хочу иметь возможность опубликовать массив для каждой группы флажков, содержащий идентификаторы флажков в настоящее время отмечены.

 $.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, то каждая из четырех переменных поста содержит парный массив name с входным именем и значением. Однако имя входа всегда будет именем группы входа для этой группы и, следовательно, для меня бесполезно. Если я попробую это сделать, просто отправлю одну группу через

$.ajax({
  url: "/stay_in_belfast/accommodation",
  type: "POST",
  data: $(":checkbox[name^='subcategory_ids[']").serialize(),                                                                                                 
  success: function( data ) {
  }
});

Показывает сообщение в виде массива идентификаторов. Я не могу понять, почему все по-другому, если я публикую одну группу или четыре группы.

В принципе, все, что я хочу в своем посте, - это 4 массива, идентифицированных по их группе ввода, причем каждый массив содержит список идентификаторов. Я уверен, что это возможно, но я просто скучаю по нему.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 01 марта 2012
Функция

jQuery.serialize() может использоваться для кодирования содержимого всей формы для отправки.Вы можете использовать закодированную строку в ваших AJAX-запросах следующим образом:

0 голосов
/ 17 июня 2013

Почему-то у них возникают проблемы при использовании этого:

url: "/foldername/file.php",

как я должен использовать всегда:

url: "foldername/file.php",,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...