我想要合并两个不同的AJAX请求。
第一个得到一些html:
def ajax_get_html(request):
if request.is_ajax() and request.method == "POST":
context = {
...
}
return render(request,"my_app/my_template.html", context)
else:
raise Http404
使用方式如下:
$.ajax({
type: "POST",
url: ajax_url,
data: {
csrfmiddlewaretoken: "{{ csrf_token }}",
},
success: function(data){
$(my_div).html(data);
}
});
我的第二个获得了一些数据:
def ajax_get_data(request):
if request.is_ajax() and request.method == "POST":
data = {
"answer": 42,
}
json_data = json.dumps(data)
return HttpResponse(json_data, content_type='application/json')
else:
raise Http404
并使用如下:
$.ajax({
type: "POST",
url: another_ajax_url,
data: {
csrfmiddlewaretoken: "{{ csrf_token }}",
},
success: function(data){
var answer = data.answer;
$("#notification_badge").html(answer);
}
});
如何将这些组合到同一个请求中?我尝试将render
的结果添加到第二个视图中的数据,但json.dumps表示它不可序列化。
答案 0 :(得分:1)
您无法序列化Django render
的输出,因为它是returns an HttpResponse object,而不是字符串(这是您希望能够序列化它)。
一个好的解决方案是使用render_to_string
将
...
data = {
"answer": 42,
"html": render_to_string("my_app/my_template.html", context)
}
...