2011-09-10 12 views
0

PHPコントローラに送信するチェックボックス(すべて同じ 'name'属性)があります。ここに私のマークアップの簡単な抜粋です:jQueryと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のために供給無効な引数()」のようなエラーを得続けます。どこが間違っていますか?

答えて

5

あなたが同じ名前で複数のチェックボックスがあり、チェックボックス名に[]サフィックスを追加し、確認のチェックボックスの配列としてそれらを送信する場合:

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

次に、あなたのPHPで、あなたがこれを行うことができます:

$user_array = isset($_POST['user_id']) ? $_POST['user_id'] : array(); 
+0

私のjQueryコールを変更する必要がありますか?私がフォームを送信する唯一の方法は 'jQuery.post()'です。 – hohner

+0

いいえ、jQueryコードを変更する必要はありません。 serialize()はそれだけで動作します。 – arnaud576875

関連する問題