2015-05-14 24 views
0

我想從django 1.8.1中的服務器加載數據到jQuery數據表。在這個過程的最後,我得到了「Uncaught TypeError:無法讀取未定義的」javascript錯誤的屬性長度「。Django的jQuery數據表:未捕獲TypeError:無法讀取未定義的屬性'長度'

查看;

datas = Datas.objects.all() 
jsonData = serializers.serialize('json', datas) 
return HttpResponse(jsonData, content_type='application/json') 

在瀏覽器的「網絡」中,可以看到它返回像這樣的json數組;

[{"fields": {"objectname": "O1"}, "model": "my_app.datas", "pk": 1}] 

Html;

<table class="table table-striped table-bordered table-hover" id="id_dataTable" style="cursor: pointer;"> 
</table> 

Js;

$('#id_dataTable').dataTable({ 
     "sAjaxSource": '/getData/', 
     "aoColumns": [ 
      {'mData': 'fields.objectname'} 
     ], 
     "aoColumnDefs": [ 
      { 
       "aTargets": [0], 
       "sTitle": "Object", 
       "sClass": "align-center" 
      } 
     ], 
     "bProcessing": true, 
     "bServerSide": true, 
     "bPaginate": false 
    }); 

你能幫忙嗎?謝謝

回答

1

檢查jQuery的數據表的doumentation: https://www.datatables.net/examples/ajax/objects.html

您需要提供您的數據的格式如下:

[ 
    { 
    "name": "Tiger Nixon", 
    "position": "System Architect", 
    "salary": "$3,120", 
    "start_date": "2011/04/25", 
    "office": "Edinburgh", 
    "extn": "5421" 
    }, 
    {...} 
] 

您可以通過DATAS迭代中你的觀點建立的對象,將它們追加到數組中,然後通過JsonResponse發送響應:

from django.http import JsonResponse 

datas = Datas.objects.all() 
arr = [] 
for data in datas: 
    arr.append({ 
     'key1': data.key1, 
     'key1': data.key1, 
    }) 
return JsonResponse(arr, safe=True) 
+0

首先非常感謝您的回答。這真的很有幫助。我改變了一些部分。如果它是通過JsonResponse完成的,JsonResponse 需要一個字典,我也爲此響應安排了javascript。 – kbrk

+0

JsonResponse也可以是Python/Django中的列表。將成爲JavaScript中的數組。 – Juergen

0

查看;

datas= Datas.objects.all() 
      dataArray = [] 
      for store in datas: 
       dataArray.append({ 
        'objectname':data.objectname 
       }) 

return JsonResponse({'data':dataArray}, safe=True) 

Js;

$('#id_dataTable').dataTable({ 
      "sAjaxSource": '/getData/', 
      "aoColumns": [ 
       {'mData': 'objectname'} 
      ], 
      "aoColumnDefs": [ 
       { 
        "aTargets": [0], 
        "sTitle": "Object", 
        "sClass": "align-center" 
       } 
      ], 
      "bProcessing": true, 
      "sAjaxDataProp": "data", 
      "bServerSide": true, 
      "bPaginate": false 
     }); 

這裏有一個答案..

相關問題