我想在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
。有什么问题吗?
答案 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');
}
?>