Проблема сериализации флажков с jQuery и PHP - PullRequest
0 голосов
/ 10 сентября 2011

У меня есть флажки (все с тем же атрибутом 'name'), которые я хочу отправить на контроллер PHP. Вот краткий фрагмент моей разметки:

<script type="text/javascript">
$(document).ready(function(){
   $(".someButton").click(function(){
      $.post("my_controller.php",$("#userForm").serialize());
   });
});
</script>   

<?php 
echo '<form id="userForm">';
foreach($users as $user)
{
   echo '<input name="user_id" value="'.$user->id.'">';
}
echo '</form>';
?>

Затем я хочу, чтобы мой контроллер отправил эти значения в виде унифицированного массива в модель, где он может затем выполнить оператор foreach. Логика контроллера должна (я думаю) быть примерно такой:

foreach($_POST['user_id'] as $user_id)
{
   $user_array[] = $user_id;
}
$this->model->method($user_array);

Но я продолжаю получать сообщения об ошибках типа «Недопустимый аргумент для foreach ()», потому что я не думаю, что он получает какое-либо другое значение, кроме первого. Куда я иду не так?

1 Ответ

5 голосов
/ 10 сентября 2011

Если у вас есть несколько флажков с одинаковым именем и вы хотите отправить их в виде массива отмеченных флажков, добавьте суффикс [] к именам флажков:

<input type="checkbox" name="user_id[]" value=... />

Тогда в вашем PHP вы можете сделать это:

$user_array = isset($_POST['user_id']) ? $_POST['user_id'] : array();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...