Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jquery/ajax变量中获得复选框值(勾选或取消勾选)?_Javascript_Php_Ajax_Checkbox - Fatal编程技术网

Javascript 如何在jquery/ajax变量中获得复选框值(勾选或取消勾选)?

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

我使用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 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'。