我正在构建一个Django待办事项列表。将任务标记为完成的复选框具有ajax:
//Checkbox toggles
$('input:checkbox').click(function() {
if ($(this).attr('checked')) {
$action = true;
} else {
$action = false;
}
$.ajax({
type: "POST",
url: "/gtd/action/" + this.id.split("_")[1] + "/" + $(this).val() + "/" + $action + "/",
success: function(data) {
//Update entire gtd side menu
}
})
});
在ajax的成功部分,我需要更新侧边菜单中的多个变量(与未完成任务的计数有关)。 django视图可以计算变量
def ajax_click(request, modelname, id, type, toggle):
#Do some stuff to save the object
action_count = actions = Action.objects.filter(complete=False, onhold=False).count()
hold_count = Action.objects.filter(onhold=True, hold_criteria__isnull=False).count()
return HttpResponse('')
问题是,如何将多个变量传递回ajax函数?在这个例子中,我有action_count和hold_count。如何将这些变量恢复到成功函数?
答案 0 :(得分:3)
最简单的解决方案是从视图中返回一些JSON。如下所示:
import json
data = json.dumps({
'actions': action_count,
'holds': hold_count,
})
return HttpResponse(data, content_type='application/json')
然后,您的客户端代码可以提取所需的信息;因为你正在使用jQuery的东西,它可以通过在传递给dataType: "json"
调用的对象中设置$.ajax()
来自动解析JSON,以便传递给你的成功函数。