Javascript 如何在jquery/ajax变量中获得复选框值(勾选或取消勾选)?
我使用ajax将复选框保存到数据库中,而无需重新加载页面。因此,在进行ajax调用时,我需要知道复选框的值(无论是勾选还是取消勾选)。我尝试了SO的以下代码行来获取tickbox值,但它们似乎都不适合我:Javascript 如何在jquery/ajax变量中获得复选框值(勾选或取消勾选)?,javascript,php,ajax,checkbox,Javascript,Php,Ajax,Checkbox,我使用ajax将复选框保存到数据库中,而无需重新加载页面。因此,在进行ajax调用时,我需要知道复选框的值(无论是勾选还是取消勾选)。我尝试了SO的以下代码行来获取tickbox值,但它们似乎都不适合我: tb_checkbox_id = jQuery('#tb-checkbox-id').val(); //always returns on // tb_checkbox_id = jQuery('#tb-checkbox-id').prop('checked'); always retur
tb_checkbox_id = jQuery('#tb-checkbox-id').val(); //always returns on
// tb_checkbox_id = jQuery('#tb-checkbox-id').prop('checked'); always returns false
// tb_checkbox_id = jQuery('#tb-checkbox-id').is(':checked'); always returns false
正在选择正确的id,因为我可以更改html中的值,它会使用上述代码更改输出(例如设置为false,然后将输出false)
这是我剩下的代码。页面上还有另一个复选框,但其ID不同
为什么它总是为勾选或未勾选返回相同的值?我想不出来
function tb_checkbox ($db_table_name, $db_userid_column_name, $db_checkbox_column_name, $where_user_id, $checkbox_default)
{
/*------Echo checkbox form------*/
echo '<form action="" method="post" id="checkbox_form">';
echo '<input type="checkbox" class="tb-checkbox" id="tb-checkbox-id" name="tb_checkbox_practitioner_pages"';
if ($checkbox_db_value == 1) //Display the checkbox as "checked" or not by reading checkbox_db_value which is the value from database. Is set to default value if no database value exists.
{
echo ' checked';
}
echo '> <input type="submit"> </form>';
echo "<p>Value at POST is: ";
echo $_POST['tb_checkbox_practitioner_pages'];
$user_id = bbp_get_current_user_id();
?>
<script>
// tb_checkbox_id = jQuery('#tb-checkbox-id').val();
// tb_checkbox_id = jQuery('#tb-checkbox-id').prop('checked');
tb_checkbox_id = jQuery('#tb-checkbox-id').is(':checked');
js_user_id = '<?php echo $user_id;?>';
jQuery('#checkbox_form').on('submit', function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: "/wp-content/themes/buddyboss-theme-child/tb-checkbox-js-called.php",
data: {userid: js_user_id},
success: function() {
alert("Success checkbox = " + tb_checkbox_id) //('Post is' + $_POST['tb_checkbox_practitioner_pages']);
}
});
});
</script>
<?php
}
函数tb\u checkbox($db\u table\u name,$db\u userid\u column\u name,$db\u checkbox\u column\u name,$where\u user\u id,$checkbox\u默认值)
{
/*------回显复选框表单------*/
回声';
回声';
回显“POST处的值为:”;
echo$_POST['tb_复选框_从业者_页面'];
$user_id=bbp_get_current_user_id();
?>
//tb_checkbox_id=jQuery('#tb checkbox id').val();
//tb_checkbox_id=jQuery('#tb checkbox id').prop('checked');
tb_checkbox_id=jQuery('#tb checkbox id')。is(':checked');
js_user_id='';
jQuery(“#checkbox_form”)。关于('submit',函数(e){
e、 预防默认值();
$.ajax({
类型:“POST”,
url:“/wp-content/themes/buddyboss-theme-child/tb-checkbox-js-called.php”,
数据:{userid:js_user_id},
成功:函数(){
警报(“成功复选框=“+tb\u checkbox\u id)/('Post is'+$\u Post['tb\u checkbox\u pages']);
}
});
});
好问题
我将存储一个布尔值true或false(分别为1或0)
你可以这样检查
tb_checkbox_id = document.getElementById("#tb-checkbox-id").checked;
这将存储一个true或false(检查或未检查)。然后我会将其存储在数据库中。非常感谢@Chris。在输入代码时,我得到:“(索引):1297未捕获类型错误:无法读取(索引):1297处null的属性“checked”在查看代码时,不确定为什么要使用jQuery来重新检查是否已选中。我只想将ajax请求放在if语句中。'if($checkbox\u db\u value==1){make your ajax request}'如果这个值实际上是1,那就意味着它已被检查过-因此,此时只需将其发送到ajax。我看不出有理由检查两次。您可以显示导致错误的代码吗?您也可以使用'jQuery(“input:checked”)。您可以在此处检查文档:[关于TypeError,此错误是由于未初始化变量造成的。您可能希望在范围中的某个位置添加'tb\u checkbox\u id=0'。