Javascript 使用django访问ajax元素
我正在使用ajax获取django模型并获得结果 views.pyJavascript 使用django访问ajax元素,javascript,jquery,ajax,django,Javascript,Jquery,Ajax,Django,我正在使用ajax获取django模型并获得结果 views.py def browse_jobs(request): keyword = request.GET.get('keyword', None) company = Company.objects.filter(title__icontains=keyword) data = serializers.serialize("json", company, fields=('title')) return J
def browse_jobs(request):
keyword = request.GET.get('keyword', None)
company = Company.objects.filter(title__icontains=keyword)
data = serializers.serialize("json", company, fields=('title'))
return JsonResponse({'data':data,})
ajax请求
$.ajax({
url: '/browse_jobs',
data: {
'keyword': keyword,
},
dataType: 'json',
success: function (data) {
if (data) {
console.log(data.title);
}
}
});
我从django那里得到了回应
{"data": "[{\"model\": \"app.company\", \"pk\": 1, \"fields\": {\"title\": \"Facebook\"}}, {\"model\": \"app.company\", \"pk\": 2, \"fields\": {\"title\": \"Fabook\"}}]"}
我的问题是如何访问标题。您在这里双重序列化了“data”
键的值:首先是通过序列化程序。序列化(…)
构造字符串,然后再次序列化它(构造字符串文字),这使得获取元素变得更加困难
例如,我们可以首先将JSON blob转换回普通Python对象来防止这种情况:
from json import loads as json_loads
def browse_jobs(request):
keyword = request.GET.get('keyword', None)
company = Company.objects.filter(title__icontains=keyword)
data = serializers.serialize("json", company, fields=('title'))
return JsonResponse({'data': json_loads(data), })
看起来您“双重序列化”了响应:与其序列化值,不如让JSONing只发生一次。我该如何做它工作了,但是您能告诉我如何访问title@ChamsAgouni当前位置查询集中有两个元素(两个公司)因此有多个
标题
s。例如,我想访问第一个标题undefined TypeError:无法读取未定义的属性'title'error@ChamsAgouni:它为console.log(数据)显示了什么代码>
$.ajax({
url: '/browse_jobs',
data: {
'keyword': keyword,
},
dataType: 'json',
success: function (data) {
console.log(data.data[0].fields.title);
}
});