0

Djangoでjquery datatable ajax-sourceの使用を実装しようとしましたが、いくつかの問題があります。ajax呼び出しはうまく機能し、応答を取得しますが、そのaData is undefinedエラーがjavascriptで発生した後.

問題は何ですか?

これらは私がこれまでに持っているものです。

ビュー.py

def model_history(request):
    o = Model.objects.get(id=request.GET["pk"])
    items_list = list(o.lastupdate_set.all().values())
    return HttpResponse(simplejson.dumps(items_list),'application/json')

js

    function viewModelHistory(pk){
        url1 = "/model/history/?pk="+pk;

        $('#history').dataTable( {
            "bProcessing": true,
            "bServerSide": true,
            "sAjaxSource": url1,
            "fnServerData": function ( sSource, aoData, fnCallback ) {
              $.ajax( {
                "dataType": 'json',
                "type": "POST",
                "url": sSource,
                "data": aoData,
                "success": fnCallback
              } );
            }
          } );
}

listmodel.html

<table id="history">
                    <thead>
                        <tr>
                            <th>col1</th>
                            <th>col2</th>
                            <th>col3</th>
                            <th>col4</th>
                            <th>col5</th>
                        </tr>
                    </thead>
                    <tbody>
                    </tbody>
                </table>
4

2 に答える 2

3

JSON 構造の形式に問題があるようです。jquery.datatables は、次のようになることを期待しています

{"aaData": [["blah1", "blah2", "blah3"]]}

JSON が次のようになっている場合

[["blah1", "blah2", "blah3"]]

view.py では、次のように item_list を辞書でラップする必要があります。

items_list_dict = {}
items_list_dict.update({'aaData': items_list})
return HttpResponse(simplejson.dumps(items_list_dict),'application/json')
于 2012-05-24T21:12:03.370 に答える
0

JSON 出力を投稿すると役に立ちますが、次のようになると思います。

[["key":"val"],["key":"val"]]

その場合は、json からキーを削除する必要があります。Datatables は、次のような json を想定しています。

[["val"],["val"]]

あなたができることの1つは、クエリからリストのリストを作成することです

my_json = []
for item_list in items_list:
    a = [item_list.xxx_column_name_xxx]
    my_json.append(a)

items_list_dict = {}
items_list_dict.update({'aaData': my_json})
data = json.dumps(items_list_dict)

return HttpResponse(data, mimetype='application/json')
于 2013-04-21T05:35:08.790 に答える