最下方的发布评论按钮失效

最下方的发布评论按钮失效

http://img1.sycdn.imooc.com//climg/60be402c0988917f11940699.jpg

输入内容,点击发布并没有反应。但是点击回复,可以回复一条评论。http://img1.sycdn.imooc.com//climg/60be4082090c897a12140946.jpg

js:

<script>
   $('.btn-show-less').click(function () {
$(this).parent().addClass('hidden');
       $(this).parent().prev().removeClass('hidden')
})
$('.btn-show-more').click(function () {
$(this).parent().addClass('hidden');
       $(this).parent().next().removeClass('hidden')
})

function bindCommentPublishEvent(html) {
// 查询发表评论表单
       var form = $('.comment-publish', html);
       // 给发表评论表单下的.btn绑定事件
       $('.btn', form).click(function () {
var _form = $(this).parent();
           var content = $('input[name=content]', _form);
           // 将表单内容序列化成一个字符串
           var data = _form.serialize();
           $.ajax({
url: {% if answer %}'{{ url_for("qa.comments", answer_id=answer.id) }}'{% endif %},
               method: 'POST',
               data: data,
               complete: function (res) {
console.log(res);
                   if (res.status === 201) {
window.alert(res.responseJSON.message);
                       // 清空评论框
                       content.val('');
                       // 重新加载页面
                       location.reload();
                   } else if (res.status === 400) {
window.alert(res.responseJSON.message);
                       window.location.href = '{{ url_for("accounts.login") }}';
                   } else {
window.alert('请求失败,请稍后重试');
                   }
}
})
})
}

// 评论回复按钮事件
   function bindReplyEvent(html) {
$('.link-reply', html).click(function () {
// jq取得data-id中的值=comment_id
           var comment_id = $(this).data('id');
           // 通过comment_id查询得到对应的回复表单
           var form_reply = $('#id-comment-' + comment_id);
           // 隐藏所有评论表单
           $('.comment-publish').addClass('hidden');
           // 显示最后一个评论表单
           $('.comment-last').removeClass('hidden');
           // 显示该评论下表单
           form_reply.removeClass('hidden');
       })
}

function bindCommentEvent(html) {
$('.link-love', html).click(function () {
var _this = $(this);
           var url = $(this).data('url');
           $.ajax({
url: url,
               method: 'POST',
               complete: function (res) {
// console.log('res:', res);
                   if (res.status === 201) {
window.alert('点赞成功');
                       // 当前的点赞数
                       var count = $('span', _this).text();
                       // 点赞数+1
                       count = parseInt(count) + 1;
                       // 重新设置,实现点赞数变更
                       $('span', _this).text(count);
                   } else if (res.status === 401) {
window.alert('请登录');
                       // 跳到登录
                       window.location.href = '{{ url_for("accounts.login") }}';
                   } else {
window.alert('服务器正忙');
                   }
}
})
})
}

// 评论列表的异步加载
   var comment_ls = $('#id-comment-ls');
   var page = 1;

   function loadPageData(page) {
page = page || 1
       $.ajax({
url: {% if answer %}'{{ url_for("qa.comments", answer_id=answer.id) }}'{% endif %},
           method: 'GET',
           data: {
page: page
},
           complete: function (res) {
// console.log('res:', res);
               if (res.status === 200) {
var result = res.responseJSON;
                   if (result.code === 0) {
var html = $(result.data);
                       // 评论回复按钮事件绑定
                       bindReplyEvent(html);
                       // 发布按钮事件绑定
                       bindCommentPublishEvent(html);
                       // 点赞按钮事件绑定
                       bindCommentEvent(html);
                       comment_ls.empty().append(html);
                   }
} else {
window.alert('服务器正忙')
}
}
})
}

$('.pager .previous').click(function () {
page = page - 1;
       loadPageData(page);
   })
$('.pager .next').click(function () {
page = page + 1;
       loadPageData(page);
   });
   // 默认加载第一页数据
   loadPageData(page);
</script>

view:

@qa.route('/comments/<int:answer_id>', methods=['GET', 'POST'])
def comments(answer_id):
"""坪论"""
   answer = Answer.query.get(answer_id)
question = answer.question
if request.method == 'POST':
# 添加一条评论
       try:
# 判断用户是否登录
           if not current_user.is_authenticated:
result = {'code': 1, 'message': '请登录'}
return jsonify(result), 400
           # 1.获取前端传递的参数
           content = request.form.get('content', '')
reply_id = request.form.get('reply_id', None)
# 2.保存到数据库
           comment_obj = Comment(content=content, user=current_user,
                                   answer=answer, question=question, reply_id=reply_id)
db.session.add(comment_obj)
db.session.commit()
# 如果添加成功,则返回result201状态码
           result = {'code': 0, 'message': '评论成功'}
return jsonify(result), 201
       except Exception as e:
print(e)
result = {'code': 1, 'message': '服务器正忙,请稍后重试'}
# jsonify将字典转成json字符串
           return jsonify(result), 400
   else:
# GET获取坪论列表
       try:
page = int(request.args.get('page', 1))
page_data = answer.comment_list().paginate(page=page, per_page=3)
data = render_template('comments.html', page_data=page_data, answer=answer) # 获取html内容
           return jsonify({'code': 0, 'data': data, 'meta': {'page': page}}), 200
       except Exception as e:
print(e)
return jsonify({'code': 1, 'data': '', 'message': '服务器正忙'}), 500

html:

<!-- 发表评论 -->
<form class="form-horizontal comment-publish comment-last">
   <input type="text" name="content" class="form-control" placeholder="写下你的评论...">
   <button type="button" class="btn btn-default btn-grey">发布</button>
</form>
<!-- // 发表评论 -->


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!发布评论功能的bindCommentPublishEvent()函数只在异步加载评论时调用了,因此点击最下边的评论是没有办法发布的

解决方法:需要再调用一下发布评论功能的函数即可

http://img1.sycdn.imooc.com//climg/60bedc1a09768b7707000616.jpg

http://img1.sycdn.imooc.com//climg/60bedc5209ef8c3108620399.jpg

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师