2017-07-01 102 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