彼は投稿した直後にコメント投稿を表示したいと思います。私は既にコメントをアップロードしました。どうやってユーザーに表示できますか?リフレッシュせずにコメントを表示
$(".comments input[name='post']").keydown(function (evt) {
var keyCode = evt.which?evt.which:evt.keyCode;
if (keyCode == 13) {
var form = $(this).closest("form");
var container = $(this).closest(".comments");
var input = $(this);
$.ajax({
url: "{% url 'comment' letnik_id=letnik_id classes_id=classes_id subject_id=subject_id %}",
data: $(form).serialize(),
type: 'post',
cache: false,
beforeSend: function() {
$(input).val("");
$(input).blur();
},
success: function (data) {
alert("Successful comment");
$(input).val("");
$(input).blur();
}
});
}
});
この記事のコメント:私はこのAjaxコードを持っています。 views.pyでは、私はコメント割引:なしまた
def comment(request, letnik_id, classes_id, subject_id):
try:
if request.method == 'POST':
exam_id = request.POST.get('exam_id')
exam = get_object_or_404(Exam, id=exam_id)
comment = request.POST.get('post')
comment = comment.strip()
if len(comment) > 0:
instance = ExamComment(
exam=exam,
comment=comment,
comment_user=request.user)
instance.save()
return redirect('subject_id', letnik_id=letnik_id, classes_id=classes_id, subject_id=subject_id)
html = ''
for comment in exam.get_comments():
html = '{0}{1}'.format(html, render_to_string('exam_partial_comment.html', {'comment': comment}))
return HttpResponse(html)
else:
return HttpResponseBadRequest()
except Exception:
return HttpResponseBadRequest()
:return redirect('subject_id', letnik_id=letnik_id, classes_id=classes_id, subject_id=subject_id)
このコードを、あなたの代わりのHttpResponseのJsonResponse機能を必要とする...
私は新しいコメントだけをレンダリングできますか? – zzbil
ビュー内のすべてのコメントを照会するのではなく、新しいコメントをJsonResponse({comment:comment})のような辞書内のJsonResponseに戻してください。 ajax success関数では、forループを削除し、新しいコメントをdiv.innerHTML = div.innerHTML + commentとして追加します。うん、これははるかに良い。 – Tico
ありがとうございます。しかし問題がある。もし私がこれを含んでいれば、リダイレクト( 'subject_id'、letnik_id = letnik_id、classes_id = classes_id、subject_id = subject_id)を返します。私はajaxで成功しません。なぜそれが分かったのですか?エラー400(悪い要求)が出ますが、リフレッシュ後にコメントが投稿されます – zzbil