0
我有一堆代码,我认为应该从另一个“主题”选择框中的值中填充“类别”选择框。使用Ajax和jQuery从Django中的查询集填充选择框
views.py
def get_categories(request, subject_id):
subject = Subject.objects.get(pk=subject_id)
categories = subject.category_set.all()
category_dict = {}
for cat in categories:
category_dict[cat.id] = cat.name
return HttpResponse(json.dumps(category_dict), content_type="application/json")
urls.py
url(r'^get_categories/(?P<subject_id>\d+)/$', views.get_categories, name='get_categories'),
jQuery的
$(document).ready(function(){
$('select[name=subject]').change(function(){
subject_id = $(this).val();
request_url = '/get_categories/' + subject_id + '/';
$.ajax({
url: request_url,
success: function(data){
$.each(data[0], function(key, value){
$('select[name=category]').append('<option value="' + this.key + '">' + this.value +'</option>');
});
}
})
})
});
请求传递JSON数据,据我所知, JavaScript是给错误:
Uncaught TypeError: Cannot read property 'length' of undefined
我厌倦了将数据[0]更改为数据并删除了错误,但所有字段都显示为在选择框中未定义。
还要注意,它是真正低效的查询每次选择。在每个循环之前执行一次,将其存储在局部变量中,并从循环内部引用它。 –