<input name="inform_me" id="inform_me" type="checkbox"> inform me
每当我检查是否设置了此复选框时,我都会
BOOL(真)
即使没有真正选中复选框。
这就是我的PHP的样子:
var_dump(isset($_POST['inform_me']));
它出了什么问题?
答案 0 :(得分:5)
PHP isset()函数将检查变量是否存在!
例如。
$a = false; // or any other value
echo isset($a); // True, because the variable $a exists!
echo isset($b); // False, because the variable $b doesn't exist!
无需将isset放在那里,请尝试以下方法:
echo $_POST['inform_me'];
$_POST['inform_me']
变量将包含该值。
如果选中,则会包含复选框的值的值。
例如,这是HTML代码
<input name="inform_me" id="inform_me" type="checkbox" value="test"> inform me </input>
如果选中,变量$ _POST ['inform_me']将为“test”,否则(如果未选中)该值将为空字符串。
如果您没有为HTML标记提供值,则如果选中该变量将为“on”,否则为空字符串(如果未选中)。
答案 1 :(得分:0)
据我所知,在我的简短经验中,复选框返回或关闭(因此当你接受它时它将始终返回true,因为它存在,但你并没有将返回条件设置为它具有的值),如前所述。即便如此,有一种方法我已经成功地习惯了这一点,在我的页面中,如果你想要RSS,我有一个输入复选框,如果想要RSS(模式开启),我存储1,如果想要RSS,则存储0。吨。像你这样的情况:
($_POST['inform_me'] == 'on') ? 1 : 0;
到目前为止,您可以将1和0更改为您想要返回的任何返回值,记住第一个(在这种情况下为1)将是条件为真时返回,第二个(例如0)条件是假的。
答案 2 :(得分:0)
我找到了解决方案。我的问题是我用Ajax传递了变量$_POST['inform_me']
。在Ajax中,我使用data: { inform_me: $('#inform_me').val() }
来获取复选框的值。而不是.val()
我现在正在使用.is(':checked')
并且它有效!