You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现添加评论后无需页面刷新即可更新评论列表?

实现添加评论后无刷新更新评论列表

问题描述

我目前使用Ajax加载评论列表,但希望在添加新评论后无需刷新页面就能展示新评论,能否提供帮助?

原拉取评论列表的Ajax代码:

// Yorum Listeleme
$(document).ready(function () {
    let id = $("#BlogID").val();
    $.ajax({
        contentType: "application/json",
        dataType: "json",
        type: "Get",
        data: { BlogID: id },
        url: "/Comment/CommentList/",
        success: function (funk) {
            let values = jQuery.parseJSON(funk);
            let htmlst = ``;
            $.each(values, (index, value) => {
                htmlst += `<div class="media"><img style="width:64px; height:64px;" src=${value.UserImage} alt="" class="img-fluid" />  <div class="media-body"> <h5 class="mt-0">${value.CommentUserName}</h5><p>${value.CommentContent}</p></div></div>`;
            });
            $("#listcom").html(htmlst);   
        }
    });
});

原添加评论的Ajax代码:

$("#btncommentadd").click(function () {
    let values = {
        BlogID: $("#BlogID").val(),
        CommentUserName: $("#CommentUserName").val(),
        CommentTitle: $("#CommentTitle").val(),
        CommentContent: $("#CommentContent").val(),
        CommentDate: $("#CommentDate").val()
    };
    $.ajax({
        type: "Post",
        url: "/Comment/CommentAdd/",
        data: values,
        success: function (fnk1) {             
            let result = jQuery.parseJSON(fnk1);
        }
    });
});

解决方案

方案1:添加成功后重新拉取评论列表

把加载评论列表的逻辑封装成可复用函数,在添加评论成功后调用该函数刷新列表,同时清空输入框提升用户体验。

修改后的评论列表加载代码:

// 封装评论列表加载函数
function loadCommentList() {
    let id = $("#BlogID").val();
    $.ajax({
        contentType: "application/json",
        dataType: "json",
        type: "Get",
        data: { BlogID: id },
        url: "/Comment/CommentList/",
        success: function (funk) {
            let values = jQuery.parseJSON(funk);
            let htmlst = ``;
            $.each(values, (index, value) => {
                htmlst += `<div class="media"><img style="width:64px; height:64px;" src=${value.UserImage} alt="" class="img-fluid" />  <div class="media-body"> <h5 class="mt-0">${value.CommentUserName}</h5><p>${value.CommentContent}</p></div></div>`;
            });
            $("#listcom").html(htmlst);   
        }
    });
}

// 页面初始化时加载评论列表
$(document).ready(function () {
    loadCommentList();
});

修改后的添加评论代码:

$("#btncommentadd").click(function () {
    let values = {
        BlogID: $("#BlogID").val(),
        CommentUserName: $("#CommentUserName").val(),
        CommentTitle: $("#CommentTitle").val(),
        CommentContent: $("#CommentContent").val(),
        CommentDate: $("#CommentDate").val()
    };
    $.ajax({
        type: "Post",
        url: "/Comment/CommentAdd/",
        data: values,
        success: function (fnk1) {             
            let result = jQuery.parseJSON(fnk1);
            // 假设后端返回的result包含success字段表示操作结果
            if (result.success) {
                loadCommentList(); // 刷新评论列表
                // 清空输入框
                $("#CommentUserName").val("");
                $("#CommentTitle").val("");
                $("#CommentContent").val("");
                $("#CommentDate").val("");
            }
        }
    });
});

方案2:直接插入新评论到列表顶部(更高效)

如果后端在添加评论后能返回新创建的评论完整数据,无需重新拉取整个列表,直接将新评论的HTML插入到列表最前端,减少服务器请求。

修改后的添加评论代码:

$("#btncommentadd").click(function () {
    let values = {
        BlogID: $("#BlogID").val(),
        CommentUserName: $("#CommentUserName").val(),
        CommentTitle: $("#CommentTitle").val(),
        CommentContent: $("#CommentContent").val(),
        CommentDate: $("#CommentDate").val()
    };
    $.ajax({
        type: "Post",
        url: "/Comment/CommentAdd/",
        data: values,
        success: function (fnk1) {             
            let newComment = jQuery.parseJSON(fnk1);
            // 确认新评论数据有效
            if (newComment && newComment.UserImage && newComment.CommentUserName) {
                // 构建新评论的HTML结构
                let newCommentHtml = `<div class="media"><img style="width:64px; height:64px;" src=${newComment.UserImage} alt="" class="img-fluid" />  <div class="media-body"> <h5 class="mt-0">${newComment.CommentUserName}</h5><p>${newComment.CommentContent}</p></div></div>`;
                // 插入到评论列表顶部
                $("#listcom").prepend(newCommentHtml);
                // 清空输入框
                $("#CommentUserName").val("");
                $("#CommentTitle").val("");
                $("#CommentContent").val("");
                $("#CommentDate").val("");
            }
        }
    });
});

方案对比

  • 方案1:实现简单,无需修改后端逻辑,适合评论数量较少的场景
  • 方案2:性能更优,减少一次HTTP请求,但需要后端支持返回新创建的评论数据

内容的提问来源于stack exchange,提问作者Ünsal GEL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 03:35:33