Jquery 在AJAX请求后显示HttpResponse的结果
我有一个页面,在初始加载时显示数据库中的所有自由职业者。我有一个函数,它创建一个POST请求,传递三个select元素的数据,从数据库中检索特定的匹配项Jquery 在AJAX请求后显示HttpResponse的结果,jquery,python,ajax,django,Jquery,Python,Ajax,Django,我有一个页面,在初始加载时显示数据库中的所有自由职业者。我有一个函数,它创建一个POST请求,传递三个select元素的数据,从数据库中检索特定的匹配项 $(document).ready(function() { $('select.university').change(function(){ $.ajax({ type: 'POST', url: '#', data: {
$(document).ready(function() {
$('select.university').change(function(){
$.ajax({
type: 'POST',
url: '#',
data: {
university: $('select.university').val(),
skill: $('select.skill').val(),
city: $('select.city').val()
},
dataType: 'html'
});
return false;
});
});
我的视图获取数据并通过HttpResponse返回:
def browse_freelancers(request):
if request.method == 'GET':
...
else:
skills = request.POST.getlist('skill')
universities = request.POST.getlist('university')
cities = request.POST.getlist('city')
# fetch from database
return HttpResponse({'freelancers': freelancers,
'skills': skills,
'universities': universities,
'cities': cities})
特定的fetch肯定正在执行,因为我可以在调试器中逐步执行它,但HTML中没有任何更改。我缺少什么?您需要将
数据类型设置为“json”,然后在您的视图中:
return HttpResponse(content=json.dumps({'freelancers': freelancers,
'skills': skills,
'universities': universities,
'cities': cities}))
您需要将dataType
设置为“json”,然后在视图中:
return HttpResponse(content=json.dumps({'freelancers': freelancers,
'skills': skills,
'universities': universities,
'cities': cities}))
在你看来,
from django.utils import simplejson
def browse_freelancers(request):
...
data = simplejson.dumps({'freelancers': freelancers,
'skills': skills,
'universities': universities,
'cities': cities})
return HttpResponse(data)
如果您使用的是Django 1.7+,则可以使用而不是HttpResponse
from django.http import JsonResponse
return JsonResponse({'foo':'bar'})
您需要在$.ajax()
中设置一个success
函数
在你看来,
from django.utils import simplejson
def browse_freelancers(request):
...
data = simplejson.dumps({'freelancers': freelancers,
'skills': skills,
'universities': universities,
'cities': cities})
return HttpResponse(data)
如果您使用的是Django 1.7+,则可以使用而不是HttpResponse
from django.http import JsonResponse
return JsonResponse({'foo':'bar'})
您需要在$.ajax()
中设置一个success
函数
另一种可能的结构:
if request.is_ajax() and request.method == 'POST':
# ...
response = {'freelancers': freelancers,
'skills': skills,
'universities': universities,
'cities': cities}
return JsonResponse(response)
else:
# ...
另一种可能的结构:
if request.is_ajax() and request.method == 'POST':
# ...
response = {'freelancers': freelancers,
'skills': skills,
'universities': universities,
'cities': cities}
return JsonResponse(response)
else:
# ...