Задать вопрос
UnluckySerivelha
@UnluckySerivelha

Как передать массив отмеченных chechbox в форме с помощью AJAX?

Есть форма с текстовым инпутом и кучей чекбоксов. Нужно в PHP-обработчике получить значение текстового инпута и все отмеченные чекбоксы. Использую jquery и метод serialize() для формы.
Разметка выглядит примерно так:
<input type="text" name="userName">
<input type="checkbox" name="checkbox" value="value1">
<input type="checkbox" name="checkbox" value="value2">
<input type="checkbox" name="checkbox" value="value3">

Собранные данные с формы выглядят так(например, при нажатых 2 и 3 чекбоксе):
username=SOMEUSERNAME&checkbox=value2&checkbox=value3

Но если из PHP с помощью echo вывожу массив $_POST в консоль, то в нем остаётся только value последнего чекбокса.

Как решить подобную задачу?
Есть мысль собрать массив из значений отмеченных чекбоксов, но как его потом добавить к остальным сериализованным данным формы? И правильно ли это? Думается мне, что должен быть способ легче и правильнее
  • Вопрос задан
  • 2473 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
вариантов несколько:
<input type="checkbox" name="checkbox[]" value="value1"> квадратные скобки - php автоматически преобразует в массив с цифровыми индексами
<input type="checkbox" name="checkbox[some]" value="value2"> задать свой индекс массиву
<input type="checkbox" name="checkbox[name]" value="value3"> (будет виден как $_POST['checkbox']['name'])
<input type="checkbox" name="checkbox1" value="value4"> задать отдельное имя каждому чекбоксу

В зависимости от задачи может подойти то или иное решение
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
profesor08
@profesor08 Куратор тега JavaScript
Задай разные имена чекбоксам, это тебе не радио кнопка. На это тебя должно было навести то, что в $_POST у тебя только один ключ "checkbox", потому что в массиве может быть только один уникальный ключ, следовательно значение по ключу будет перезаписываться. Ответ на вопрос лежит на поверхности, но по незнанию самых базовых вещей, ты пытаешься выдумывать какие-то решения проблемы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы