我有一个评论系统,将新发布的评论附加到其余部分。当用户悬停评论时,会显示“删除”按钮。
当用户点击删除按钮时,会显示确认对话框,如果确认,则会完成ajax调用以删除评论。
这对于页面上已有的注释非常有效,但是Ajax调用似乎不适用于附加的项目。
所以示例评论如下:
<div class='textcomment' id='".$commentID."'>
<a class='$rightscommentcolor'>USERNAME:</a>
THIS IS THE COMMENT TEXT
<div class='commentActionButton'>
<form action='process/deletecomment.php' method='post' class='delrepcomment'>
<input class='deletecommentsubmit' name='submit-delete' type='$buttontype' value='delete'>
</form>
</div>
</div>
要显示按钮我使用:
$(".commentsholder").on("mouseenter", ".textcomment", function(){
var $this = $(this);
$(this).closest('.textcomment').find('.commentActionButton').show();
});
然后删除评论ajax:
$(document).on('submit','.delrepcomment',function(){
var $targetComment = $(this);
if (confirm('Do you really want to delete this comment?')) {
$.ajax({
type: "POST",
url: "process/deletecomment.php",
data: $targetComment.serialize(),
dataType: "json",
success: function(response){
if (response.commentDeleted === true) {
$("#"+response.commentID).remove();
}
else {
$('.delrepcomment').after('<div class="error">Something went wrong!</div>');
}
}
});
return false;
} else {
return false;
}
});
});
这一切都正常,但是当点击附加评论上的删除按钮时,会显示确认对话框,但评论不会被删除。
这让我相信ajax电话没有发生?
如果我删除ajax方面的东西,并使用php页面直接保留表单,它的工作原理。即使是附加的注释,但在使用ajax时它也不起作用。
评论附加如下:
if (response.commentSuccess === true) {
$this.closest('.addcomment').prev().append("<div class='textcomment'><a class='"+response.userRights+"'>"+response.username+":</a> "+response.commentToPost+"<div class='commentActionButton'><form action='process/deletecomment.php' method='post' class='delrepcomment'><input class='deletecommentsubmit' name='submit-delete' type='submit' value='delete'></form></div></div>");
}
答案 0 :(得分:1)
当您通过AJAX附加新评论时,您没有设置id
div的textcomment
属性,所以当您从AJAX调用返回时,您无法通过它找到它id并将其删除:
//DIV does not have id!
...append("<div class='textcomment'><a class='"+r...