を変更するにはAJAX呼び出しを実行するとき、私はこのようになりますcomments.html
子テンプレート持つ私の子テンプレートでの作業を停止するjavascriptのすべて:私はこのAJAX機能を呼び出すボタンをクリックすると私はクエリセット
<div class="commentsContainer">
{% for comment in comment_list %}
...
{{ comment.text }}
...
{% endfor %}
</div>
を:
クエリセットを変更するには、このビューを呼び出す$('.comments_new').on('click', function() {
$.ajax({
type: 'GET',
url: '/new_comments/',
data: {
},
success: function (data) {
$('.commentsContainer ').replaceWith(data);
}
})
});
(initalクエリセットはcomment_list = Comment.objects.filter().order_by('-score__upvotes')
です:
def new_comments(request):
if request.is_ajax():
comment_list = Comment.objects.filter().order_by('-timestamp')
html = render_to_string('comments.html', {'comment_list': comment_list})
return HttpResponse(html)
これはクエリーセットを正常に交換しますが、何らかの理由で新しくロードされたテンプレート/クエリーセットではJavaScriptが機能しません。私は単純な.css()
jquery関数を使ってみましたが、どちらもうまくいきません。定期的なCSSのみが動作します。なぜこのようなことが起こり、どうやって修正できるのか、誰かに教えてもらえますか?
EDIT:呼び出しが行われたとき
私はまた私の端末でこのエラーを取得しています:UserWarning: A {% csrf_token %} was used in a template, but the context did not provide the value. This is usually caused by not using RequestContext.
EDIT2:新しいコールJsonResponse
def new_comments(request):
if request.is_ajax():
comment_list = Comment.objects.filter().order_by('-timestamp')
html = {'comment_list': comment_list}
return JsonResponse(html)
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <QuerySet [<Comment: qwdjkqbwkdjbqd>, <Comment: woeifnoeinfw>, <Comment: example>, <Comment: enlaasd>, <Comment: aelanfaf>, <Comment: asdasda>]> is not JSON serializable
を使用して
あなたの応答はhtmlですか? –
はい? 'comments.html'は' base.js' javascriptファイルを持つ基本テンプレートを拡張します。 – Zorgan
ではなく、レスポンスf ajax url: '/ new_comments /'はhtmlコンテンツですか? –