【发布时间】:2011-06-07 08:53:18
【问题描述】:
我有一个表单,其中包含一部分复选框和另一部分单选按钮。两者都有类似的问题。
复选框部分的 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>
当我提交表单时,似乎没有正确定义活动数组。
当我处理表单时,假设前两个复选框被勾选,当 php 执行时
$activity = $_POST['activity'];
var_dump($activity);
打印出来:
array(2) [0]=> string(0) "" [1]=> string(0) ""
显然,它检测到三个框中有两个被打勾,但它没有通过值。如果 HTML 以所有复选框的选中属性开头,则它会正确发送复选框值。
同样,对于单选按钮,除了默认值之外,我无法获得要通过的值。如果用户更改了默认值,则参数存在,但值为空字符串。
我的理解是,该数组应该包含为每个被勾选的框定义的值,无论在加载表单时该框是否被勾选。我做错了什么?
【问题讨论】:
-
你能显示你的表单的 HTML 吗?
-
您是否使用过 Firebug/HTTPFox 之类的工具来查看浏览器发送的内容?可能有一些客户端 javascript 修改表单,或者一些库/插件在执行相同的服务器端。
-
我使用 Firebug,但我不知道如何找出浏览器发送的内容。我不想问这个,但你能指出我正确的部分吗?谢谢。
-
它在 Net 面板下。您会看到列出的各个请求。单击 POST 请求旁边的加号,然后单击 Post 选项卡
-
嗨彼得,感谢您的指导。了解网络面板会派上用场,但在这种情况下,它只是确认了 var_dump 已经显示的内容,即数组值是空白的。不过,它会让我免于添加调试代码!