gpt4 book ai didi

javascript - Laravel 5.1 - 使用 ajax 打印评论,然后能够立即删除它

转载 作者:行者123 更新时间:2023-11-30 16:24:15 25 4
gpt4 key购买 nike

我正在制作一个功能,我可以在其中放置评论,并且它会在不刷新页面的情况下显示(因此使用 AJAX)。

这很好用,但是用户还需要能够删除评论。当页面刷新时,他们可以删除它,但是我似乎无法找到一种方法来删除新放置的评论而不刷新页面。

万一不清楚我会添加一个场景

目前有效:

1) User adds new comment

2) New comment shows via AJAX

3) Users refreshes the page

4) User can delete his comment

这目前不起作用:

1) User adds new comment

2) New comment shows via AJAX

3) user changes his mind and wants to delete the comment (without having refreshed the page first)

无论如何我可以选择新评论的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');

有什么想法可以解决我的错误逻辑,并使它正常工作吗?

最佳答案

最好的方法是在创建评论时将新评论的 ID 从 Laravel 发送回客户端,并将其保存在客户端的某个位置(例如,在元素的 ID 中)。

然后,删除评论的 AJAX 调用将能够发送评论 ID,因此您可以在 Laravel 中通过 ID 查找评论以将其删除。

关于javascript - Laravel 5.1 - 使用 ajax 打印评论,然后能够立即删除它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34343759/

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