使用php检查复选框的值
我想在使用php检查复选框的值,php,jquery,Php,Jquery,我想在php中检查复选框的值。选择或不选择。我在某种程度上尝试 JQuery <script type="text/javascript"> $(document).ready(function(){ $("#save").click(function(){ var checkBox = $("#boxV").is(':checked'); $.ajax({ url: "htt
php
中检查复选框的值。选择或不选择。我在某种程度上尝试
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>
$(文档).ready(函数(){
$(“#保存”)。单击(函数(){
var checkBox=$(“#boxV”).is(':checked');
$.ajax({
url:“http://localhost/testing/test.php",
类型:“POST”,
async:true,
数据:{
“完成”:1,
“复选框”:复选框
},
成功:功能(数据){
$(“#结果”)。追加(数据);
}
});
});
});
PHP
<?php
if(!isset($_POST['checkBox'])){
echo ('0');
}else{
echo ('1');
}
?>
HTML
<li><input type="checkbox" id = "boxV" > Check</li><br>
检查
问题是
结果
div在两次(已选择,未选择)中都填充了1
。有什么问题吗?您可以有条件地传递复选框
变量,如下所述:
$(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);
}
});
});
});
您的$\u POST['checkBox']将始终设置为0或1。因此,您的PHP应该如下所示-
<?php
if(isset($_POST['checkBox']) && $_POST['checkBox'] === '1'){
echo ('1');
}else{
echo ('0');
}
?>
在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
}
或者,您可以重写JavaScript逻辑,使其仅在值为true时包含复选框
$(document).ready(function(){
$("#save").click(function(){
var chkVal = $('input[name$=chkBox]:checked').val();
var checkBox;
if(typeof(chkVal) != 'undefined'){
checkBox = 1;
}else{
checkBox = 0;
}
$.ajax({
url: "http://localhost/testing/test.php",
type:"POST",
async:true,
data:{
"done":1,
"checkBox" : checkBox
},
success: function(data){
$('#result').append(data);
}
});
});
});
PHP代码
<? php
if($_POST['checkBox'] != 1){
echo ('0');
}else{
echo ('1');
}
?>
HTML
检查
isset函数检查变量是否已设置,但不检查变量的值。若变量的值为false(0),则会设置变量,因为变量有一个值。不管是真是假。您每次都在ajax中发送“checkBox”,因此每次调用时都会设置变量。为此,你必须使用这个
if($_POST['checkBox']) {
//true
}
或
当您通过
复选框时
表示其始终已设置。因此,您必须添加另一个条件来检查或不通过它set@SatpalHTML是added@AhmedGinani我该如何做?可能重复的尝试此操作并使用字段集添加一个值检查:if(isset($\u POST['checkBox'])&&$\u POST['checkBox']){/*Checked*/}否则{/*Not Checked*/}
;为什么要否决投票?这也是解决办法。一个问题只能用一个解决方案来解决不是强制性的。@Edwin-我已经描述了我的更改,但仅供参考,否决投票意味着此信息未被完全使用,请参见此处
if($_POST['checkBox']) {
//true
}
if($_POST['checkBox'] === true){
//true
}