#javascript #jquery #ajax
#javascript #jquery #ajax
Вопрос:
Привет, это может показаться странным, но допустим, в настоящее время я делаю это:
var post_data = $('input[name="checks[]"]:checked').map(function() {
return this.value;
}).get();
чтобы получить содержимое нескольких флажков в массив для отправки через AJAX. Теперь, что я НА самом деле хочу сделать, это сконструировать post_data определенным образом.
Я хочу, чтобы значение флажка сохранялось в местоположении массива, соответствующем его значению. Я надеюсь, что это имеет смысл: S
итак, допустим, мои значения флажков были:
1,5,3,7
я хочу, чтобы post_data был сконструирован как:
post_data[1] = 1
post_data[5] = 5 и т.д.
игнорируя тот факт, что это может показаться глупым, кто-нибудь может мне помочь, я сейчас испытываю трудности. Это то, что я пытался, но мои очень скудные знания берут верх надо мной:
ОБНОВЛЕНИЕ РЕДАКТИРОВАНИЯ: (прогресс кода)
var post_data = $('input[name="checks[]"]:checked').serialize();
alert(post_data);
$.post('search_item.php', { 'checks[]':post_data,..
большое спасибо,
Комментарии:
1. Есть ли возможность, что вы могли бы просто отправить его как
checks[]=1amp;checks[]=3amp;checks[]=5
и т.д. И просто обработать его в нужной вам форме на сервере? Это кажется более нормальным режимом работы.
Ответ №1:
Вы близки. value
является строкой. Вам нужно число. Используйте parseInt()
, чтобы превратить эту строку в число:
post_data[parseInt(value)] = value;
Комментарии:
1. хорошо, итак, я внес это изменение, однако в настоящее время массив, похоже, не публикуется. :S спасибо, что помогли мне. обновлено кодом.
2. @buymypies Это звучит как новый вопрос. Пожалуйста, оставьте этот вопрос для одного вопроса, а не для постоянного справочного форума.
3. @buymypies Не беспокойтесь, просто рекомендую наилучший подход в соответствии с рекомендациями сайта, чтобы ваш вопрос (который сохранен для истории) потенциально мог наилучшим образом помочь другим пользователям.
Ответ №2:
Комментарии:
1. я не совсем понимаю, у меня вообще нет большого опыта в этом. ;(
Ответ №3:
Я хотел бы предложить решение с использованием HTML и serialize(). Если вы установите каждый флажок с номером массива в названии, то получите результат, который вы ищете.
<input type="checkbox" name="checkbox[3]" value="3" class="retain_array_value_checkbox" />
<input type="checkbox" name="checkbox[5]" value="5" class="retain_array_value_checkbox" />
<input type="checkbox" name="checkbox[1]" value="1" class="retain_array_value_checkbox" />
Теперь JS:
var post_data = $('input.retain_array_value_checkbox:checked').serialize();
Я не могу это протестировать, но это должно сработать. Просто и понятно 🙂
Комментарии:
1. я раньше не использовал serialize, могу ли я использовать вот так:
$.post('search_item.php', { 'data: serialized_data , ....
?2. да, он передается с параметром data. [ api.jquery.com/jQuery.ajax /] в документации приводится несколько примеров.
3. в настоящее время post_data просто пуст. Я обновил свой код тем, что я пытаюсь.
4. Вам нужно будет использовать имя класса, чтобы получить все элементы :checked и заполнить атрибуты name соответствующим номером.