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

Django/JQuery.ajax. Get values from JSON using ajax

我的观点是这样的:

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_sha256000$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 我未定义。 当我使用 alert(data) 时,它只是说它是一个对象。

有什么建议吗?

使用$.each()迭代器:

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

因为得到的是一个[{}, {}]的js对象数组,所以如果直接访问键名获取相应的值是获取不到的。因此,您必须在其中循环才能访问对象。

所以在上面的代码中item是当前的js对象,item.username会记录admin.