完全检查您的代码并与OP进行深入讨论之后。我设法解决了运营问题。
删除后,
HttpResponseRedirect
我首先将其转换为JsonResponse
并进行了相应的更改。response_data = { "status":200, "message":"comment_stored", "parent": True, "parent_id": parent_comment.id, "comment_count": parent_comment.comment_count() }
return JsonResponse(response_data)
下一步是简单地执行DOM *** 作以显示从响应中获取的数据。但是事实证明,这比预期的要复杂。因此,为简化起见,我将模板分为两部分-一部分将是主要部分,另一部分仅包含注释的HTML。
使用,
django.template.loader.render_to_string我生成了所需的HTML以显示注释,并与响应一起以JSON中的字符串形式发送。
html = render_to_string('main/child_comment.html', {'comment': [new_comment], 'user': request.user, 'comment_form':comment_form })response_data = { "status":200, "message":"comment_stored", "comment":html, "parent": True, "parent_id": parent_comment.id, "comment_count": parent_comment.comment_count() }return JsonResponse(response_data)
最后,在主要在DOM *** 作脚本和一种表单模型中进行了较小的更改(与当前问题无关)之后,代码按预期工作。
$('form').submit(function(e) {e.preventDefault();if ($(this).parents("tr") != 0) { parent_id = $(this).parents("tr").attr("id").split("_")[1]; data_str = $(this).serialize() + "&parent_id=" + parent_id;} else { data_str = $(this).serialize();}$(this).parents("tr").attr("id").split("_")[1]$.ajax({ type: 'POST', url: '{% url 'comment_create' %}', data: data_str, success: function(json) { alert(json.message); if (json.status == 200) { var comment = json.comment.trim(); var user = json.user; if (!json.parent) { $(comment).insertBefore('.table tr:first'); } else { $(comment).insertBefore('#comment_' + json.parent_id + ' #child_comment:first'); $(".replies").text("답글" + json.comment_count + "개 모두 보기"); } } }, error: function(response) { alert("some error occured. see console for detail"); }});
});
奖金: 我们还遇到了另一个小问题,但我在这里不再讨论。我为此写了一个单独的答案。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)