带有jQuery和POST的Form Value-Single复选框


Form Value with jQuery and POST - Single Checkbox

这成功地返回了一个结果,但结果对我来说毫无用处。在php文件中,我有一个简单的代码:var_dump($_POST['memberMe']);

无论是否标记复选框,结果都是字符串(2)"on"。如何获得根据复选框是否被标记而更改的结果?

谢谢。

Remember Me: <input type="checkbox"
                    id="remember">
<div id="result" style="margin-top:20px;">

<script>
$("#submit").click(function(){
    submitLogin();
});
$("#password").keyup(function (f){
    if (f.keyCode == 13) {
        submitLogin();
    }
});

function submitLogin(){
    $.post("php/test.php", { 
        loginUsername:$('#username').val(), 
        loginPassword:$('#password').val(),
        rememberMe:$('#remember').val()
    }, function(data){
        $("#result").text(data);
    });
}
</script>

复选框的value属性是必需的,默认为on。这适用于无论是否选中复选框,值始终相同。您想要的是检查复选框的状态(而不是其值)。

$('#remember').prop("checked")

顺便说一句,这比.is(:checked)快得多,请参阅http://jsperf.com/prop-vs-ischecked/5以便进行比较。

最好是序列化通过post$("form").serialize()发送的表单;然后,在目标页面中,只需检查$_POST['memberMe']是否存在。(如果未选中复选框,则$_POST['memberMe']的isset将等于false)

这:

rememberMe:$('#remember').val()

需要成为:

rememberMe:$('#remember').is(':checked')