我的观点如下:
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。 当我使用警报(数据)时,它只是说它是一个对象。
有什么建议吗?
答案 0 :(得分:1)
使用$.each()
迭代器:
$.each(data, function(i, item){
console.log(item.username);
});
因为您获得了[{}, {}]
个js对象数组,所以如果直接访问键名来获取相应的值,则无法获得它。所以你必须循环才能访问对象。
因此,在上面的代码item
中,当前的js对象和item.username
将记录admin
。