我正在使用live复选框,所以当我需要立即将ON(1)或OFF(0)一个复选框时,复选框更新数据库中的值,一切正常......但现在我正在使用live用户列表中的复选框(我现在已经拥有100个用户)...所以问题是当我试图禁止某人时,复选框只适用于最后一个而不是其他用户...可以你能帮帮我吗?
以下是表格:
<form class="form-horizontal" method="post" name="ban" id="ban">
<input type="hidden" name="id" value="<?php echo $row['id']; ?>">
<?php if ($row['banned'] == '1') {
echo '<input type="checkbox" name="banned" data-no-uniform="true" class="iphone-toggle" value="on" checked>';
} else {
echo '<input type="checkbox" name="banned" data-no-uniform="true" class="iphone-toggle" value="off" >';
} ?>
</form>
<div id="gif" style="display:none;" align="center"><img src="img/ajax-loaders/ajax-loader-1.gif" /></div>
JS:
$("#ban").click(function(){
$.ajax({
type:"POST",
url:"includes/ban.php?ts=" + new Date().getTime(),
dataType:"text",
data:$(this).serialize(),
beforeSend:function(){
$("#gif").show();
},
success:function(response){
$("#gif").hide();
}
})
return false;
});
这是DB的代码:
<?php
include('con.php');
if($_POST['banned']==on) {
try{
$id = $_POST['id'];
$banned = '0';
$sql = "UPDATE BANS SET
banned = :banned
WHERE id= :id";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':banned', $banned, PDO::PARAM_STR);
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
echo "<div class='alert alert-block alert-success fade in'>
<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×</button>
the ban is off!.
</div>";
}catch(PDOException $exception){
echo "Error: " . $exception->getMessage();
}
} else {
try{
$id = $_POST['id'];
$banned = '1';
$sql = "UPDATE BANS SET
banned = :banned
WHERE id= :id";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':banned', $banned, PDO::PARAM_STR);
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
echo "<div class='alert alert-block alert-danger fade in'>
<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×</button>
the ban is on!
</div>";
}catch(PDOException $exception){
echo "Error: " . $exception->getMessage();
}
}
$dbh = null;
?>
答案 0 :(得分:2)
仅提交最后一个的原因是因为您无法为多个元素分配相同的ID。
更改:<form class="form-horizontal" method="post" name="ban" id="ban">
收件人:<form class="form-horizontal ban" method="post">
然后将您的jQuery选择器更新为$("form.ban")
最后,在你的PHP中:if($_POST['banned']==on) {
应该是:if($_POST['banned']=='on') {
编辑:作为旁注,同样的问题会影响AJAX加载器GIF,再假设你在每一行都有一个AJAX加载器,但这不在这个问题的范围内。