2011-09-10 63 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