使用php检查复选框的值

时间:2017-05-01 11:04:09

标签: php jquery

我想在php中查看checkBox的值。选择与否。我正试着某种方式;

JQuery的

<script type="text/javascript">

    $(document).ready(function(){
        $("#save").click(function(){
            var checkBox = $("#boxV").is(':checked');

            $.ajax({
                url: "http://localhost/testing/test.php",
                type:"POST",
                async:true,
                data:{
                    "done":1,
                    "checkBox" : checkBox
                },
                success: function(data){
                        $('#result').append(data);
                }   
            });
        });
    });



 </script>

PHP

<?php
    if(!isset($_POST['checkBox'])){
        echo ('0');
    }else{
        echo ('1');
    }
    ?>

HTML

 <li><input type="checkbox" id = "boxV" > Check</li><br>

问题是result div的两个时间(已选中,未选中)都填充了1。有什么问题吗?

3 个答案:

答案 0 :(得分:1)

在PHP中,isset函数正在测试数组是否包含元素,而不是值是否为true。由于您正在设置:

data:{
    "done":1,
    "checkBox" : …
}

isset将始终返回true。

您通常不会以正常形式看到此行为,因为浏览器会以不同方式执行此操作:如果未选中该复选框,则浏览器将完全退出。但是,由于您使用的是Ajax,因此您正在实现自己的行为,始终包含它。

在PHP中,您可以使用以下测试:

if(isset($_POST['checkBox']) && $_POST['checkBox']) {
    //  checked
}
else {
    //  unchecked
}

请注意,我已将测试更改为正测试。如果你真的想要一个否定的:

if(!isset($_POST['checkBox']) || !$_POST['checkBox']) {
    //  unchecked
}
else {
    //  checked
}

或者,如果值为true,您可以重写JavaScript逻辑以仅包含复选框。

答案 1 :(得分:0)

您可以有条件地传递checkBox变量,如下所述:

$(document).ready(function(){
        $("#save").click(function(){
            var checkBox = $("#boxV").is(':checked');
            if(checkBox) {
                var data = {
                   'done': 1,
                   'checkBox': checkBox 
                };
            }else{
                 var data = {
                   'done': 1,                       
                 };
            }
            $.ajax({
                url: "http://localhost/testing/test.php",
                type:"POST",
                async:true,
                data:data,
                success: function(data){
                     $('#result').append(data);
                }   
            });
        });
    });

答案 2 :(得分:0)

你的$ _POST [&#39; checkBox&#39;]总是被设置为0或1.所以你的PHP应该是这样的 -

    <?php
    if(isset($_POST['checkBox']) && $_POST['checkBox'] === '1'){
        echo ('1');
    }else{
        echo ('0');
    }
    ?>