代码正在工作,由于某种原因我不知道,它停止工作了。
jQuery (inside document.ready(:
$('#hideFriendsPublicView').on('click', function() {
if ($(this).is(':checked')) {
alert($('#hideFriendsPublicView').length);
$.post("ajax.php", { checked: 1, owner_id:<?php echo $profileData[0]['id']; ?>}); //owner_id as an int, as the id in mysql is of type int too.
} else {
alert($('#hideFriendsPublicView').length);
$.post("ajax.php", { checked: 0, owner_id:<?php echo $profileData[0]['id']; ?>});
}
});
.HTML:
if ( $profileData[0]['showFriends'] ) {
echo '<label><input type="checkbox" checked="checked" id="hideFriendsPublicView"> Hide my friends from public view.</label>';
} else {
echo '<label><input type="checkbox" id="hideFriendsPublicView"> Hide my friends from public view.</label>';
}
.PHP:
if ( isset($_POST['checked']) ) {
$query = $conn->prepare("UPDATE users SET showFriends = :newState WHERE id = :id");
$query->execute(array(
':newState' => $_POST['checked'],
':id' => $_POST['owner_id']
));
}
似乎使用相同的代码,单击复选框时会触发 ajax.php 文件,并且 MySQL 也得到了更新。
现在,PHP文件在单击时不会被触发(我也尝试了('change'(。
编辑:选中/取消选中复选框并返回 1 时,两个alert($('#hideFriendsPublicView').length)
警报都会被触发。
编辑:我也尝试最初在jQuery,IE中仅使用字符串:
$('#hideFriendsPublicView').on('click', function() {
if ($(this).is(':checked')) {
alert($('#hideFriendsPublicView').length);
$.post("ajax.php", { checked: "checked", owner_id:"<?php echo $profileData[0]['id']; ?>"});
} else {
alert($('#hideFriendsPublicView').length);
$.post("ajax.php", { checked: "unchecked", owner_id:"<?php echo $profileData[0]['id']; ?>"});
}
});
PHP 在这些字符串上强制转换 int(2 列的类型是 int(:
if ( isset($_POST['checked']) ) {
if ( $_POST['checked'] == "checked" ) {
$_POST['checked'] = 1;
} else {
$_POST['checked'] = 0;
}
$query = $conn->prepare("UPDATE tusers SET profile_showFriends = :newState WHERE id = :id");
$query->execute(array(
':newState' => $_POST['checked'],
':id' => (int) $_POST['owner_id']
));
}
但这也失败了。
认为您的owner_id可能导致的问题是一个string
我不确定您的用户 id 是字符串还是整数。 如果它是字符串,你应该用"
扭曲它。 如果你不这样做,JavaScript会认为是一个variable
if ($(this).is(':checked')) {
alert("bla");
$.post("ajax.php", { checked: 1, owner_id:"<?php echo $profileData[0]['id']; ?>" });
} else {
alert("bla");
$.post("ajax.php", { checked: 0, owner_id:"<?php echo $profileData[0]['id']; ?>" });
}