Как получить массив всех флажков, переданных на следующую страницу через _POST, используя JQuery - PullRequest
0 голосов
/ 08 сентября 2011

Как получить массив всех флажков, выбранных на странице, и затем передать его на следующую страницу (в данном случае php, чтобы его можно было узнать с помощью функции php _POST). Я придумал это:

<script type="text/javascript">
var selected = new Array();

$(document).ready(function() {

  $("input:checkbox:checked").each(function() {
       selected.push($(this).val());
  });
$('#od').submit(function() {
  alert(this.selected); // *See note below
  $.post('receiver.php', {'registration': selected});
  return false;
});

});

</script>

Но is, похоже, не работает :( Возвращает ноль, как если бы в массив не было добавлено никаких флажков, или, возможно, функция post неверна. Можете ли вы указать мне правильное направление здесь?

Ответы [ 4 ]

2 голосов
/ 08 сентября 2011

Я обнаружил следующие проблемы:

  1. Вы читаете отмеченные позиции при загрузке страницы, игнорируя при этом все изменения, сделанные пользователем. Переместите этот код в обработчик submit().

  2. Ваш код отладки (alert(this.selected)) пытается отобразить значение свойства selected для узла формы. Это не ссылка на вашу глобальную переменную JavaScript selected. Я предлагаю вам использовать подходящий инструмент отладки, такой как Firebug ; оповещения крайне не подходят.

  3. Вы успешно отправили значения проверенных пунктов. Вы просто игнорируете поле name и переименовываете все в registration. Это выглядит намеренно, в противном случае сообщите:

    {'registration': selected}
    

Полагаю, вы можете заставить jQuery сериализовать значения для вас, но исправление этих мелких деталей в вашем коде должно сработать в любом случае.

0 голосов
/ 08 сентября 2011

Или просто: $ ('input: selected', '# form-container');

0 голосов
/ 08 сентября 2011
$('#od').submit(function() {
  var selected = $('input[type="checkbox"]:checked').toArray();
  $.post('receiver.php', {'registration': selected});
  return false;
});

Размещаемые данные, возможно, придется разделить .....

0 голосов
/ 08 сентября 2011

Я думаю, $("input:checkbox:checked") должно быть `$ ('input [type =" checkbox "]: флажок")

...