【发布时间】:2016-09-19 11:15:47
【问题描述】:
我正在尝试使用 Django 的 REST 框架和 AJAX 来完成国家名称自动完成。相关部分在这里:
#---- views.py -------------
@api_view(['POST'])
def get_country(request):
if request.method == 'POST':
#JSON to serializer object
serializer = CountrySerializer(data=request.data)
if (serializer.is_valid() == False):
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
req_name = serializer.validated_data['country_name']
matching_countries = Country.objects.filter(country_name__icontains = req_name )[:20]
country_json = {}
country_json['country_name'] = []
for c in matching_countries:
country_json['country_name'].append(c.country_name)
return JsonResponse(country_json)
// ---- client side call
function get_country(query, process) {
$.ajax({
url: 'get_country/',
type: 'POST',
dataType: 'json',
data: {
country_name: query
},
success: function (response) {
s = response.data;
console.log(typeof(eval(s)));
}
});
}
该请求似乎有效,如果我在 chrome 开发人员工具中检查响应,我会得到如下信息:
{"country_name": ["BHUTAN", "HUNGARY", "LITHUANIA"]}
问题在于响应对象似乎具有未定义的类型。行 console.log(typeof(eval(s)));在控制台中打印 undefined。我尝试了各种解析、字符串化的方法,但它们似乎都不起作用。知道发生了什么吗?我必须保留上述结构,以便稍后将其插入另一个函数。
【问题讨论】:
标签: jquery json django django-rest-framework