我很难从ajax get请求中获取对象中的正确字段。 ajax请求在Django应用程序中并与视图对应。这一行:
console.log(data);
显示对象中的所有数据。我想在console.log()
输出用户名,但我无法完成。
我尝试了很多变化,即我在Django视图部分使用了filter而不是get。我试图循环数据并使用[i],但到目前为止没有任何效果。
希望有人知道如何解决这个问题。我附加了django视图,模板视图和chrome dev工具控制台输出。
django部分视图:
def Data(request, user_id):
if request.is_ajax():
sidebar_data = serializers.serialize("json",
[User.objects.get(id=user_id)])
return HttpResponse(
JsonResponse({'sidebar_data': sidebar_data}),
content_type="application/json"
)
return HttpResponse("not a ajax request")
模板视图:
$( ".test{{ user.user.id }}" ).click(function() {
$.ajax({
url : ‘xxx/‘,
dataType : 'json',
method : 'GET',
success: function(data)
{
// this works - outputs all data
console.log(data);
// this does not work
console.log(data.sidebar_data.fields[1].username);
},
failure: function(){
}
});
});
Chrome控制台中浏览器的输出:
Object {
sidebar_data: "[{"fields": {"username": “xxx”, "first_name": “xxx”}, "model": "auth.user", "pk": 989}]”}
如果我使用console.log(data.sidebar_data);我得到以下输出,这是更近的一步。但是一旦我尝试使用字段或用户名的任何组合,我就会得到未定义的错误。
[{"fields": {"username": “xx”, "first_name": “xxx”}, "model": "auth.user", "pk": 989}]
答案 0 :(得分:0)
尝试使用data[1].fields[1]
代替data.sidebar_data.fields[1].username
答案 1 :(得分:0)
像这样更改views.py:
from django.core import serializers
def data(request):
if request.is_ajax():
user = User.objects.filter(id=1)
data = serializers.serialize('json', user)
return HttpResponse(data, content_type ="application/json")
return HttpResponse("not a ajax request")
并像这样更改模板:
$( ".test{{ user.user.id }}" ).click(function() {
$.ajax({
url : ‘xxx/‘,
dataType : 'json',
method : 'GET',
success: function(data)
{
console.log(data[0].fields.username);
},
failure: function(){
}
});
});