【问题标题】:Iterating through json queryset遍历 json 查询集
【发布时间】:2020-11-06 16:53:43
【问题描述】:

我有一个 Ajax 搜索表单,它当前正确返回查询的用户的用户名和个人资料图像,如下所示:

[{"username": "bugfixtest1", "userprofileinfo__profile_pic": "user-icon.png"}, {"username": "test", "userprofileinfo__profile_pic": "placeholder.jpg"}, {"username": "testemailsend", "userprofileinfo__profile_pic": null}, {"username": "testwithoutprofile", "userprofileinfo__profile_pic": null}]

但是,我现在正尝试遍历其中的每一个并将结果输出为 HTML。但是,以下似乎不起作用:

 $.ajax({
        url: '/ajax/search-users/',
        type: 'GET',
        data: {
          'Q': text
        },
        dataType: 'json',
        success: function(data) {
          var item = data.usersearchresult
          $.each(item.DATA, function(index,item) {
            $('#search_results').html('<li>' + item.username + ' </li>');
         });

我也试过了:

    success: function(data) {
      for (var i = 0; i < data['usersearchresult'].length; i++){
            $('#search_results').html('<li>' + data['usersearchresult'][i] + ' </li>');
      }
    }

这些似乎都不起作用?

【问题讨论】:

  • 你从哪里得到usersearchresult?你的json没有这样的字段吗?
  • @Swati 从我的 django 视图 - qs_json = serializers.serialize('json', queryset) return JsonResponse({'usersearchresult': qs_json 这工作正常,因为 json 在模板中呈现,我只是无法取出项目
  • 你可以直接在for循环中传递data。即:$.each(data, function(index,item) { $('#search_results').append('&lt;li&gt;' + item.username + ' &lt;/li&gt;'); });。也可以使用append而不是html

标签: jquery arrays json ajax django-queryset


【解决方案1】:

意识到了问题。如果有人遇到类似问题,则 json 将作为字符串而不是 json 对象输出。

添加以下修复它:

var item = data.usersearchresult
var parsed = JSON.parse(item);

for (var i = 0; i < parsed.length; i++){....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多