2017-07-01 125 views
0

我有一個數據表,我試圖在有新數據顯示時追加行。我相對缺乏經驗,所以我簡單地解決了這個問題,並希望編寫一個腳本來檢查數據庫的每秒更新,而不是偵聽服務器發送的事件。我試圖編寫一個Ajax查詢來獲取數據表中的所有對象,如果它們的第6個值爲false(這意味着它們尚未加載),那麼它會使用該信息向我的數據表添加一行。我的表是一個Django的web應用,這裏是我試圖實現代碼:使用Ajax更新表格

<script type="text/javascript"> 
     $(document).ready(function(){ 
      var table = $('#example').DataTable(); 
      setInterval(function(){ 
      newrequests = $.ajax({ 
       type: "GET", 
       url: "/main/newrequests/", 

       // I tried this and it didn't work 

       // success: function(data) { 
       //  for(i = 0; i < data.length; i++){ 
       //  // check if the request has been loaded 
       //  if(data[i][5] == 0) 
       //   // if not, load and set to loaded 
       //   table.row.add(data[i]).draw; 
       //   data[i][5] == 1; 
       //  } 
       // } 
      }); 

      for(i=0; i<newrequests.length; i++){ 
       if (newrequests[i][5] == 0){ 
       table.row.add(newrequests[i]).draw(); 
       newrequests[i][5] = 1; 
       } 
      } 

      }, 1000) 
     }); 
</script> 

我已經設置了/主/ newrequests視圖它只是數據庫中的所有對象:

def newrequests(request): 
    return HttpResponse(Request.objects.all()) 

當我更新數據庫時,數據表不刷新。有誰知道我做錯了什麼?我覺得這可能是我嘗試使用Ajax的方式。

回答

0

DataTable中已經有這一個選項:

var table = $('#example').DataTable({ 
    "ajax": '/main/newrequests' 
}); 

setInterval(function() { 
    table.ajax.reload(); 
}, 30000); 

https://datatables.net/examples/data_sources/ajax.html https://datatables.net/reference/api/ajax.reload()

+0

我不知道數據表有這樣的功能 - 表示感謝。當我嘗試實現它時,它給出了一個錯誤HTTP 500.我在線查看了幾個教程,並且我指出的那個頁面的觀點是: def newrequests(request): requests = Request.objects.all () data = json.dumps(requests) return HttpResponse(data,content_type ='application/json') 你知道爲什麼這會返回一個錯誤而不是重新加載表嗎? – hackerman