我已经建立了一个订阅表单,它在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
块