javascript - 使用 Django 访问 ajax 元素

标签 javascript jquery ajax django

我正在使用 ajax 获取 django 模型并获得结果

View .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\"}}]"}

我的问题是如何访问标题。

最佳答案

你在这里 double 序列化了 “data” 键的值:首先是 serializers.serialize(..) 构造了一个string,然后您再次将其序列化(构造字符串文字),使其更难获取元素。

我们可以防止这种情况,例如首先将 JSON blob 变回 vanilla Python 对象:

from json import loads as <b>json_loads</b>

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': <b>json_loads(</b>data<b>)</b>, })

然后 AJAX 调用将收到一个 JSON blob,其中 “data” 确实映射到一个字符串,而是一个子字典列表,使其更容易访问。

您的查询有两个结果,您可以打印第一个 title:

$.ajax({
    url: '/browse_jobs',
    data: {
      'keyword': keyword,
    },
    dataType: 'json',
    success: function (data) {
        console.log(<b>data.data[0].fields.title</b>);
    }
});

关于javascript - 使用 Django 访问 ajax 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51933315/

相关文章:

javascript - 在 jqgrid 的寻呼机中重新定位 pagenumber 字段

javascript - 为什么我在快速打字时会出现错误的、双倍的输入值?

c# - 如何根据 ASP.NET MVC 中的 Controller 操作在页面 javascript 中设置变量?

javascript - 下拉列表中不显示任何数据的人口

javascript - Splice 删除多个索引

javascript - AJAX动态内容 "event delegation"替换为 "each"

javascript - Ajax 错误检查 - 如果 AJAX 请求失败,如何防止内容更改?

javascript - Gulp 在 uglify() 未处理的错误事件上失败

javascript - 使用 ajax 在 codeigniter 中使用单个输入上传多个图像时出现问题

python - 如何将 GET 请求从我的 flask 应用程序发送到另一个站点?