在我的表单中(我使用 jQuery 的 ajax() 通过 POST 提交)我有以下复选框(检查新用户是否应具有管理员权限):
<form action="../inc/new_user.php" id="new_user_form">
Username:<br><input type="text" name="username" placeholder="Username"><br><br>
Email:<br><input type="text" name="email" placeholder="Email"><br><br>
Password:<br><input type="password" name="password" placeholder="Password"><br><br>
<!-- here's the checkbox -->
Admin: <input type="checkbox" name="admin" /><br><br>
<input type="submit" value="Save">
</form>
然后我发布值(所有其他字段都工作得很好,只是复选框没有):
$( "#new_user_form" ).submit(function( event ) {
event.preventDefault();
var $form = $( this ),
username = $form.find( "input[name='username']" ).val(),
email = $form.find( "input[name='email']" ).val(),
password = $form.find( "input[name='password']" ).val(),
admin = $form.find( "input[name='admin']" ).val(),
url = $form.attr( "action" );
var posting = $.post( url, { username: username, email: email, password: password, admin:admin } );
posting.done(function( data ) {
$( "#message_dialog" ).empty().append( data );
$ ("#message_dialog" ).dialog({
modal: true,
buttons: {
Ok: function() {
$( this ).dialog( "close" );
}
}
});
});
});
此代码用于获取 PHP 中的值:
$user_username = $_POST['username'];
$user_email = $_POST['email'];
$user_password = $_POST['password'];
if (isset($_POST['admin'])) {
$user_admin = 1;
} else {
$user_admin = 0;
}
但是当我回显 $user_admin 时,无论复选框的状态如何,我总是得到“1”。这很奇怪,因为我多次被告知如果未选中该复选框,则不会设置 $_POST 值。
我还尝试在输入元素上使用值属性,并在 PHP 中进行比较。我的方法都不起作用,这让我现在发疯。
注意:我将我的 php 变量 $user_admin 设置为 0 或 1,以将其作为 TINYINT 存储在我的数据库 (MySQL) 中。 1 表示“是的,用户是管理员”,0 表示“不,他不是管理员”。
请告诉我这里出了什么问题。
最佳答案
你可能想要一个 bool 值来告诉你复选框是否被选中:
admin = $form.find( "input[name='admin']" ).is(':checked'),
然后用PHP检查
if (isset($_POST['admin']) && $_POST['admin']) {
关于PHP:checkbox-isset 总是返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20075511/