gpt4 book ai didi

javascript - 复选框更改上的 jQuery $.post 不起作用

转载 作者:行者123 更新时间:2023-11-28 08:50:44 24 4
gpt4 key购买 nike

代码本来可以工作,但由于某种我不知道的原因,它停止了工作。

jQuery(在 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 转换(两列的类型是 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是一个字符串

我不确定您的用户 ID 是字符串还是整数。如果它是字符串,你应该用 " 来扭曲它。如果你不这样做,javascript 会认为它是一个 变量

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']; ?>" });
}

关于javascript - 复选框更改上的 jQuery $.post 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19173513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com