2011-09-23 53 views
-1

我回来的1一个QuerySet jQuery和我的JQuery看起来像这样解析Django的查询集使用AJAX

<script> 
    $(document).ready(function(){ 

    $("#search_form").submit(function(event) 
    { 
     event.preventDefault(); 

     $.ajax({ 
      type: "POST", 
      url: "object/search/", 
      processData: false, 
      dataType: "json", 
      success: function(data){ 
       $.each(data, function(key, value){ 
        alert(key + ': ' + value); 
        }); 
       } 
      }); 
    });}); 
</script> 

警报会出现,但都返回0:[对象的对象。我想显示正在返回的对象模型的名称属性。就像使用object.name一样。我真的陷入了困境,你对解决这个问题的帮助表示赞赏。

的代码,我的看法是:

if request.is_ajax(): 
    if request.method == 'POST': 
     format = 'json' 
     mimetype = 'application/json' 
     o = Object.objects.filter(name__icontains="bin") 
     data = serializers.serialize(format, o) 
     return HttpResponse(data, mimetype)  

我只返回1个对象与此查询,但它的类型是查询集的。

编辑。这是返回时的数据。

>>> o 
[<Object: Bin Ber>] 
>>> data = serializers.serialize(format, o) 
>>> data 
'[{"pk": 1, "model": "objects.object", "fields": {"name": "Bin Ber", "roof": 3,            "depth": [3], "user": 1, "created_when": "2011-08-16 03:11:36", "shared": false,               "projects": [1], "description": null}}]' 
+0

尝试查看'数据'槽'console.log(数据);'。在那里你应该能够看到,你必须访问存储在'value'中的对象。可能value.name – GNi33

+0

张贴您的django代码 –

+0

没有看到你创建数据的视图你很难知道这里发生了什么 – MattoTodd

回答

2

根据您的编辑:

$.each(data, function(key, value){ 
     alert(key + ': ' + value.fields.name); 
    }); 
} 
+0

是的,返回undefined –

+0

我更新我的答案 – MattoTodd

+0

你能链接我一个参考制作我自己的序列化程序吗?另外,除非是查询集,否则serializers.serialize行将不起作用。 –

-1

看到返回的数据只是使用JavaScript函数JSON.stringfy(数据); 应该显示的数据,而不是[对象对象]