记录学习与后端知识并分享学习代码过程(会飞的鱼Blog)

emlog评论成功后刷新页面并跳转到指定评论处

会飞的鱼 0 1267 2023年6月25日

在制作模板中,因为各种需求想自己获取表单当参数然后评论成功官方接口并没有提供json返回的数据,只能自己获取参数了,但是发现有个小问题,评论成功后不能取到最新的评论id所以自己想了个小办法,下面直接放上代码吧仅供参考。
首先表单需要添加一个idcommentform按钮需要添加一个idcomment_submit

<form method="post" action="<?= BLOG_URL ?>index.php?action=addcom" id="commentform" role="form">
    // ... 其他代码 ...
</form>
<button type="submit" id="comment_submit">发表评论</button>

接下来上js代码
提示:下面中id^='li-comment-']这个获取的是评论列表中id名为li-comment-后面当id,不懂看图

$("#comment_submit").click(function(event){
        event.preventDefault();
        doSubmitComment();
    });
    function doSubmitComment(){
        $.ajax({
            url: $("#commentform").attr('action'),
            type: 'post',
            data: $("#commentform").serialize(),
            cache: false,
            async:false,
            success: function(res){
                var pattern = /<div class="main">[\r\n]+<p>(.*?)<\/p>/;
                if(pattern.test(res)) {
                    res = res.match(pattern);
                    alert(res[1])
                }else{
                            alert(评论成功!)
                    setTimeout(function() {
                        var commentId = $(res).find("[id^='li-comment-']").attr("id");
                        if (commentId) {
                            commentId = commentId.split("-").pop();
                            window.location.href = window.location.href.split("#")[0] + "#" + commentId;
                            window.location.reload(true);
                        } else {
                            // 如果评论ID不存在,则只刷新页面
                            window.location.reload(true);
                        }
                    }, 2000);
                }
            },error: function(){
                btn.attr("disabled",false);
            }
        });
    };
本文由 @会飞的鱼 于 2023-6-25 发布在 会飞的鱼Blog,如无特别说明,本博文章均为原创,转载请保留出处。

网友评论

    暂无评论

会飞的鱼 在线咨询

在线时间:9:00-22:00
周六、周日:14:00-22:00