使用Django访问Ajax元素

时间:2018-08-20 14:48:12

标签: 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 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\"}}]"}

我的问题是我如何获取标题。

1 个答案:

答案 0 :(得分:1)

您在这里 double 序列化了execute dbms_mview.refresh( list => 'your_partitioned_mview' , method => 'P' -- this is where PCT is specified , atomic_refresh => false ); 键的值:首先是通过"data"构造了一个字符串,然后您再次对其进行了序列化(构造了字符串文字) ,使得获取元素变得更加困难。

例如,可以通过首先将JSON blob改回 vanilla Python对象来防止这种情况发生:

serializers.serialize(..)

然后AJAX调用将收到一个JSON blob,其中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), })不会 映射到字符串,而是映射到一个子词典列表,从而更易于访问。

这里有两个查询结果,您可以使用以下命令打印 first "data"

title