Jquery POST不工作与输入类型复选框


Jquery POST not working with input type checkbox

我已经建立了一个订阅表单,它在php中工作得很好,我现在已经应用了jquery来避免页面刷新。

HTML表单

<input name="newsletter" type="checkbox" id="checkbox" value="true">
<input name="offer" type="checkbox" id="checkbox" value="true">
PHP

<?php
if(isset($_POST['newsletter']) && isset($_POST['newsletter'])==true){
    $newsletter = true;
} else {
    $newsletter = false;
}
if(isset($_POST['offer']) && isset($_POST['offer'])==true){
    $offer = true;
} else {
    $offer = false;
}
echo 'type1='.$newsletter;    
echo 'type2='.$offer;
$query = "UPDATE $table SET type1='$newsletter', type2='$offer' WHERE id=$id"; 
$result = mysqli_query($connection, $query) or trigger_error(mysqli_error($connection), E_USER_ERROR);
jQuery

    var newsletter = false;
    var offer = false;
    var newsletterval = $("input[name='newsletter']").is(':checked');
    var offerval = $("input[name='offer']").is(':checked');
    if(newsletterval){
        newsletter=true;
    };
    if(offerval){
        offer=true;
    };
    $.post('../../subscribe.php', {newsletter:newsletter, offer:offer}, function(data){
        alert(data);            
    });

当使用php的工作很好,我可以改变订阅类型,但jquery不工作在这里,它不改变任何东西,我得到警报从post数据作为type1=1type2=1无论什么复选框我选中或取消选中

请查看并建议使用jquery的任何可能的方法。

谢谢

我猜你是在尝试这样做:

if(newsletterval){
    // use the string representation 'true' rather than a boolean value
    newsletter='true';
};
if(offerval){
    // use the string representation 'true' rather than a boolean value
    offer='true';
};
$.post('../../subscribe.php', {newsletter:newsletter, offer:offer}, function(data){
    alert(data);            
});
php代码:

<?php
if(isset($_POST['newsletter']) 
  // Check the value of `$POST['newsletter']` rather than using isset() twice
  && $_POST['newsletter'] === 'true'){
    $newsletter = true;
}

HTTP传输请求作为字符串因此javascript true != PHP的true你需要在PHP 'true''false'中使用字符串

因为PHP会将任何值的字符串等同于true你现在的代码正在寻找一个布尔值true它总是会找到的所以你总是执行if块的true部分而不是else