清理Django Ajax JSON GET请求

时间:2013-01-21 23:23:28

标签: ajax django json

所以我正在尝试使用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" } } ]

我如何让这个更具人性化?谢谢!

1 个答案:

答案 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..
            }
        }
    }
});