Reputation: 1101
I am using jquery to loop through json object... But some how it doesn't seem to work...
Here is my code,
$.ajax({
type: "GET",
url: "/users/",
// data: "page="+pageNum,
async: false,
dataType: 'json',
success: function(data){
//alert("OK AJAX");
$("#search_btn").remove();
$('#btnadduser').css('visibility','visible');
$.each(data, function() {
$.each(this, function(k, v) {
/// iterate through the objects
$("#nbody").html("<tr style='background-color:#FFFFFF; font-size:14px;'> <td>"+data.f.user4.first_name+"</td> <td>"+data.f.user4.last_name+"</td><td>"+data.f.user4.username+"</td> <td>"+data.f.user4.email+"</td> <td>"+data.f.user4.username+"</td> <td>");
});
});
}
});
when i print the json object in terminal, here is what I get.
{"f":
{"user4": {"username": "user4", "first_name": "Alex", "last_name": "kasina", "is_active": true, "email": "[email protected]"},
"user5": {"username": "user5", "first_name": "", "last_name": "", "is_active": false, "email": "", }, "user2": {"username": "user2", "first_name": "", "last_name": "", "is_active": true, "email": ""},
"user3": {"username": "user3", "first_name": "", "last_name": "", "is_active": true, "email": ""},
"user1": {"username": "user1", "first_name": "", "last_name": "", "is_active": true, "email": ""},
"lexx": {"username": "lexx", "first_name": "", "last_name": "", "is_active": true, "email": "[email protected]"}}}
I want to iterate through each user setting their first_name, last_name, user_name,... Some help please?
The view
@login_required
def users(request):
from django.core.serializers.json import DjangoJSONEncoder
from django.forms.models import model_to_dict
html = User.objects.all()
f = {} # initialise the output
username = 'username' # one of the fields from myModel
[f.update({x[username]: x}) for x in [model_to_dict(y) for y in html]]
result = simplejson.dumps({"f" : f}, cls=DjangoJSONEncoder)
print result#To see the json object
return HttpResponse(result)
Upvotes: 3
Views: 1750
Reputation: 1101
This worked!
$.each(data, function(index0, l) {
$.each(l, function(index1, n) {
/// iterate through the objects
var first_name = n.first_name;
var last_name = n.last_name;
var surname = n.username;
// do something with user_name, first_name and last_name...
$("#nbody").append("<tr> <td>"+ first_name +"</td> <td>"+ last_name +"</td><td>"+ username +"</td> </tr>");
});
});
Upvotes: 0
Reputation: 25539
views.py
@login_required
def users(request):
from django.core.serializers.json import DjangoJSONEncoder
from django.forms.models import model_to_dict
html = User.objects.all()
f = [model_to_dict(x) for x in html]
return HttpResponse(simplejson.dumps(f), cls=DjangoJSONEncoder)
javascript:
var user_list = JSON.parse(data);
for(var i=0; i<user_list.length; i++) {
var user_name = user_list[i]['username'];
var first_name = user_list[i]['first_name'];
var last_name = user_list[i]['last_name'];
// ...
// do something with user_name, first_name and last_name...
}
Upvotes: 1