我有一个表单,其中包含一部分复选框和另一部分单选按钮。我对两者都有类似的问题。
复选框部分的html如下所示:
<input type="checkbox" name="activity[]" value="run" id="run" /><label for="run">Run</label>
<input type="checkbox" name="activity[]" value="swim" id="swim" /><label for="swim">Swim</label>
<input type="checkbox" name="activity[]" value="bike" id="bike" /><label for="bike">Bike</label>
当我提交表单时,似乎没有正确定义activity数组。
当我处理表单时,假设前两个复选框被勾选,当php执行时
$activity = $_POST['activity'];
var_dump($activity);
打印:
array(2) [0]=> string(0) "" [1]=> string(0) ""
显然,它检测到三个方框中的两个被勾选,但它没有通过这些值。如果HTML以所有复选框的checked属性开头,则它会通过复选框值正确发送。
同样,使用单选按钮,我无法获得除默认值以外的值。如果用户更改了默认值,则参数存在,但该值为空字符串。
我的理解是,数组应该包含为每个勾选的框定义的值,无论在加载表单时是否勾选了该框。我做错了什么?
答案 0 :(得分:1)
我无法通过这个简单的测试重复您的行为
<?php
if ( isset( $_POST['activity'] ) )
{
$activity = $_POST['activity'];
var_dump($activity);
}
?>
<form method="post">
<input type="checkbox" name="activity[]" value="run" id="run" /><label for="run">Run</label>
<input type="checkbox" name="activity[]" value="swim" id="swim" /><label for="swim">Swim</label>
<input type="checkbox" name="activity[]" value="bike" id="bike" /><label for="bike">Bike</label>
<input type="submit" value="go" />
</form>
我点击了“游泳”和“自行车”,我的输出看起来像这样
array(2) { [0]=> string(4) "swim" [1]=> string(4) "bike" }
所以也许还有其他问题,你没有提到你的问题。
即使我用Firebug检查请求,我也会看到预期的输出
Content-Type: application/x-www-form-urlencoded
Content-Length: 39
activity%5B%5D=swim&activity%5B%5D=bike
答案 1 :(得分:0)
它按预期的方式工作,像那样复制粘贴。
它是否真的不适合你,如果你这样孤立:
<form action="test.php" method="post">
<input type="checkbox" name="activity[]" value="run" id="run" /><label for="run">Run</label>
<input type="checkbox" name="activity[]" value="swim" id="swim" /><label for="swim">Swim</label>
<input type="checkbox" name="activity[]" value="bike" id="bike" /><label for="bike">Bike</label>
<input type="submit">
</form>
<?php
$activity = $_POST['activity'];
var_dump($activity);
?>
我怀疑你没有发现这个问题(就像我在这个片段中所做的那样)并且它位于其他地方。那可能是对的吗?
答案 2 :(得分:0)