我正在制作一些评论系统,我遇到了问题。我让它看起来像一个邮件系统,这样邮件就可以从收件箱移动到两个独立的垃圾箱 - 垃圾和重要的,并计算它们包含的邮件数量,这就是问题所在。
当我将收件箱中的物品发送到垃圾箱时,他们会去那里。当我想将重要信息从收件箱移动到重要的信息箱时,不仅标记的重要信息会在那里,而且,由于某些原因我不知道,我已经发送到垃圾箱的最新消息得到了也搬到了重要的垃圾箱。我不知道为什么会这样。提前致谢
为了计算有多少消息,以及如何传输它们,我使用了ajax。消息传输一直正常,直到我决定要对消息进行计数。为了让它向我显示有多少消息,而不需要刷新页面,我输入了setinterval。
的Ajax
<script type="text/javascript">
$(document).ready(function() {
$('#btn_delete').click(function(){
if(confirm("Are you sure you want remove to trash ?")){
var id = [];
$(':checkbox:checked').each(function(i){
id[i] = $(this).val();
});
if(id.length === 0){ //tell you if the array is empty
alert("Please Select atleast one checkbox");
} else {
$.ajax({
url:'private/email/trash.php',
method:'POST',
data:{id:id},
success:function(){
for(var i=0; i<id.length; i++){
$('tr#'+id[i]+'').css('background-color', '#ccc');
$('tr#'+id[i]+'').fadeOut('slow');
}
}
});
}
} else {
return false;
}
});
});
$(document).ready(function(){
$('#btn_important').click(function(){
if(confirm("Are you sure you want remove to important ?")){
var id = [];
$(':checkbox:checked').each(function(i){
id[i] = $(this).val();
});
if(id.length === 0){ //tell you if the array is empty
alert("Please Select atleast one checkbox");
} else {
$.ajax({
url:'private/email/important.php',
method:'POST',
data:{id:id},
success:function() {
for(var i=0; i<id.length; i++) {
$('tr#'+id[i]+'').css('background-color', '#ccc');
$('tr#'+id[i]+'').fadeOut('slow');
}
}
});
}
} else {
return false;
}
});
});
setInterval(function () {
$('#show').load('private/email/count_inbox.php');
$('#inbox').load('private/email/count_inbox.php');
$('#important').load('private/email/count_important.php');
$('#trash').load('private/email/count_trash.php');
}, 5000);
</script>
计算垃圾箱
<?php
require_once("../../private/initialize.php");
$query = "SELECT COUNT(*) as total FROM comments WHERE deleted = 0";
$result = mysqli_query($dbc, $query);
$com = mysqli_fetch_assoc($result);
echo $com['total'];
mysqli_free_result($result);
mysqli_close($dbc);
?>
更新重要
<?php
require_once("../../private/initialize.php");
if(isset($_POST["id"])) {
foreach($_POST["id"] as $id) {
$query = "UPDATE comments SET deleted = 2 WHERE comment_id = '".$id."'";
mysqli_query($dbc, $query);
}
}
mysqli_free_result($query);
mysqli_close($dbc);
?>
重要的
<?php
require_once("../../private/initialize.php");
$query = "SELECT COUNT(*) as total FROM comments WHERE deleted = 2";
$result = mysqli_query($dbc, $query);
$com = mysqli_fetch_assoc($result);
echo $com['total'];
mysqli_free_result($result);
mysqli_close($dbc);
?>
首先这样做是否明智?我应该没有输入setinterval吗?
这就是它的外观
有没有人知道如何解决这个问题?很抱歉上传了一个较长的问题。
答案 0 :(得分:0)
对我来说,在把它们移到垃圾桶或重要物品后,你不会清理物品的选择。
fadeOut
方法只会将它们隐藏在页面中,但您既不会取消选中它们,也不会在AJAX成功时删除它们。因此,您正在btn.click()
再次收集ID。
尝试删除项目:$('tr#'+id[i]+'').fadeOut('slow').remove();