我必须根据另一个选择字段的选择填充选择字段。第一个选择是学校,第二个选择应该是该学校的课程。我使用ajax调用,在我看来,我有以下代码,但没有结果:
def get_classes_by_school_id(request):
school_id = request.POST.get('school_id', None)
data = {
'listClasses': Classes.objects.filter(school=school_id).values('id', 'title', 'abbr')
}
return JsonResponse({'data': list(data)})
的console.log($ parseJSON(数据)。);返回
{data: ["listClasses"]}
data:["listClasses"]
0:"listClasses"
答案 0 :(得分:2)
您的data
变量是dict
,但您稍后又list(data)
了。 list(data)
基本上将dict转换为列表,只接受密钥。在您的data
数据结构中,唯一的关键是listClasses
,这就是您最终得到[listClasses]
的原因。
一个例子:
>>> list({1:2, 3:4})
[1, 3]
您可能需要:
return JsonResponse({'data': list(data['listClasses'])})
答案 1 :(得分:1)
>>> x = list({"key1" : value1 , "key2" : value2 })
["key1" , "key2"]
试试这个
def get_classes_by_school_id(request):
school_id = request.POST.get('school_id', None)
data = {
'data': Classes.objects.filter(school=school_id).values('id', 'title', 'abbr')
}
return JsonResponse(data)
并在 javascript
中var = JSON.parse(response)
var list = response["data"]
答案 2 :(得分:1)
这是我最终解决它的方式:
def get_classes_by_school_id(request):
school_id = request.POST.get('school_id', None)
school = get_object_or_404(School, pk=school_id)
queryset = Classes.objects.filter(school=school).values('id', 'abbr')
data = [{'id': item['id'], 'abbr': item['abbr']} for item in queryset]
return HttpResponse(json.dumps(data), content_type='application/json')
并在我的javascript中:
var options = '';
$.each(data, function (key, element) {
options += '<option value="' + element.id + '">' + element.abbr + '</option>';
});
我无法让你的回复有效,但无论如何...... ...