Django的/ JQuery.ajax。使用ajax从JSON获取值

时间:2015-01-11 18:29:45

标签: jquery ajax django

我的观点如下:

def change(request):
    users = Account.objects.all().to_json()
    return HttpResponse(users, mimetype='application/json')

我的模板中的javascript看起来像这样:

$( "#btn" ).click(function() {

  jQuery.ajax({
    url: '/change/',
    type: 'get', 
    dataType: 'json',
    success: function(data) {

      alert(data.username)
    },
    failure: function(data) { 
        alert('Got an error dude');
    }
  }); 

我可以在firebug控制台中看到服务器的响应看起来不错:

[{"username": "admin", "project_list": [], "password": "pbkdf2_sha256$10000$OA1nceoBeMj2$XFZfZdfOpd7LKOGKyHrnVPUv89daY8+RzoAhApI+ePs=", "is_active": true, "is_superuser": true, "is_staff": false, "last_login": {"$date": 1420983256456}, "_cls": "User.Account", "groups": [], "user_permissions": [], "role": "admin", "_id": {"$oid": "54b27bca8a8d5114ee764bd7"}, "date_joined": {"$date": 1420983242745}}]

但是当我尝试使用

打印任何警报时
alert(data)

alert(data.field) 

例如field = username我得到undefined。 当我使用警报(数据)时,它只是说它是一个对象。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

使用$.each()迭代器:

$.each(data, function(i, item){
    console.log(item.username);
});

因为您获得了[{}, {}]个js对象数组,所以如果直接访问键名来获取相应的值,则无法获得它。所以你必须循环才能访问对象。

因此,在上面的代码item中,当前的js对象和item.username将记录admin