我正在制作一个我可以发表评论的功能,它会在不刷新页面的情况下显示(所以使用AJAX)。
这很好用,但是用户还需要能够删除评论。当页面得到刷新时,他们可以删除它,但是我似乎找不到删除新放置的注释而无需刷新页面的方法。
不清楚我是否会添加一个场景
目前有效:
1)用户添加新评论
2)新评论通过AJAX显示
3)用户刷新页面
4)用户可以删除他的评论
目前无效:
1)用户添加新评论
2)新评论通过AJAX显示
3)用户改变主意并想删除评论(没有先刷新页面)
无论如何,我可以选择新放置的评论的ID然后将其删除吗?我找不到办法。
这是我当前的Ajax代码,只要一个注释被删除(任何地方)它不起作用,所以我的逻辑有问题(我知道是什么)。但我似乎无法找到正确的方法
Ajax代码
Var Teller只是一个常规计数器
$("#details-comment-btn").click(function(e){
e.preventDefault();
var functionType = "comment";
var articleid=$('input[name=articleId]').val();
var owner_id=$('input[name=owner_id]').val();
var first_name=$('input[name=owner_first_name]').val();
var last_name=$('input[name=owner_last_name]').val();
var token=$('input[name=_token]').val();
var commentBody = $('textarea[name=commentBody]').val();
var profilepicture = $('input[name=owner_profilepic]').val();
var commentid = parseInt($('input[name=last_comment_id]').val());
if(commentBody.length != 0)
{
$.ajaxSetup({headers : {'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content')}});
$.ajax({
type: "POST",
url:articleid,
data:
{
'user_id': owner_id,
'commentBody': commentBody,
'functionType': functionType,
'article_id': articleid,
'_token': token
},
success: function(){
teller ++;
console.log(articleid);
$('#newcomment')
.prepend('<div class="comment" id="newCommentDiv' + teller + '">');
$("#newCommentDiv" + teller)
.append('<img src="/profilePics/'+ profilepicture+ '" class="profilepicture" >')
.append('<a href="/user/'+ owner_id +'/' + first_name + '/' + last_name + '" class="user">' + first_name + " " + last_name + '</a>')
.append('<span class="date">Just Now</span>')
.append('<p class="body">'+ commentBody + '</p>')
.append('<form id="deleteCommentForm'+ teller +'" action="" method="post" role="form">')
$("#deleteCommentForm" + teller)
.append(' <input type="hidden" name="_token" value="' + token + '">')
.append('<input type="hidden" name="articleId" value="' + articleid + '">')
.append('<input type="hidden" name="commentId" value="' + (commentid+teller) + '" >')
.append('<input type="submit" class="btn" name="remove_comment" id="comment-delete-btn" value="Remove">')
$("#newCommentDiv" + teller)
.append('</form>');
$('#newcomment').fadeIn();
}
});
}
});
这是我用来获取 last_comment_id 的查询我知道当一条评论被删除时它会跳过一个数字,所以在表单中打印的ID是不再纠正了。
$lastcomment = DB::table('comments')
->max('id');
我有什么想法可以解决我错误的逻辑,让这件事有效吗?
答案 0 :(得分:2)
最好的方法是在创建评论时将Laravel的新评论的ID发送回客户端,并将其保存在客户端的某个位置(例如,在元素的ID中)。
然后,删除评论的AJAX调用将能够发送评论ID,因此您可以在Laravel中按ID查找评论以删除它。