0

だから私は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" } } ]

これを人間が読めるようにするにはどうすればよいですか? ありがとう!

4

1 に答える 1

1

あなたが残したコメントに基づいて..あなたの問題は、クライアント (Web ブラウザーなど) の下流にあるようです。JSON で立ち往生していることの意味が明確ではありません。JavaScript を使用して JSON を解析している場合は、 を使用JSON.parse()してそれをネイティブ JavaScript オブジェクトに変換する必要があります。jQuery とメソッドを使用している場合は、JSON として自動的に解析するようにを設定する$.ajax()必要があります。mimetypeapplication/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..
            }
        }
    }
});
于 2013-01-21T23:35:58.457 に答える