所以我正在尝试使用AJAX加载一些数据。我可以加载数据,但它被卡在json中。我该怎么做才能让它更清洁&更具人性化的可读性?
//jquery
$.get("/get_artwork", function(data) {
var obj = jQuery.parseJSON(data)
$('.result').append("<br/> " + data + " ");
});
#Views.py
def get_artwork(request):
if request.is_ajax():
artwork = Artwork.objects.all()[1:]
if request.method == 'GET':
data = serializers.serialize("json", artwork, fields=('name','updated'), indent=2, use_natural_keys=True)
return HttpResponse(data,mimetype='application/javascript')
elif request.method == 'POST':
message = "This is an XHR POST request"
# Here we can access the POST data
print request.POST
else:
message = "Hello"
return HttpResponse(message)
这就是渲染:
[ { "pk": 3, "model": "artworks.artwork", "fields": { "updated": "2013-01-20T06:46:24Z" } }, { "pk": 2, "model": "artworks.artwork", "fields": { "updated": "2013-01-17T23:44:26Z" } }, { "pk": 1, "model": "artworks.artwork", "fields": { "updated": "2013-01-17T23:43:22Z" } } ]
我如何让这个更具人性化?谢谢!
答案 0 :(得分:1)
根据你留下的评论......似乎你的问题是客户端的下游(例如网络浏览器)。目前尚不清楚卡在JSON 中的含义。如果您使用JavaScript来解析JSON,则需要使用JSON.parse()
将其转换为本机JavaScript对象。如果您使用的是jQuery和$.ajax()
方法,则需要将mimetype
设置为application/json
,以便将其自动解析为JSON。
<强>更新强>
如果要控制如何在浏览器中呈现JSON数据,我建议您将JSON响应解析为本机JavaScript对象,然后迭代要在其中呈现的对象和字段页。例如,使用jQuery:
$.ajax({
url: '/some-url/',
dataType: 'json',
success: function(resp) {
var i, k, li, obj, fields;
for (i = 0; i < resp.length; i++) {
obj = resp[i];
// render obj pk or model name here... now iterate over fields
fields = obj.fields;
for (k of obj.fields) {
li = $('<li>').text(k + ': ' + obj.fields[k]);
// append the li to some element..
}
}
}
});