使用Ajax更新表

时间:2017-07-01 08:40:43

标签: javascript ajax django

我有一个数据表,我想在有新数据显示时追加行。我相对缺乏经验,所以我采取了简单的方法,并希望编写一个脚本,每秒检查数据库的更新,而不是监听服务器发送的事件。我尝试编写一个Ajax查询,它将获取数据表中的所有对象,如果它们的第6个值为false(这意味着它们尚未加载),那么它将使用该信息向我的数据表中添加一行。我的表位于Django webapp中,这是我试图实现的代码:

<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>

我为/ main / newrequests设置了一个视图,它只是数据库中的所有对象:

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

当我更新数据库时,数据表不会刷新。有谁知道我做错了什么?我觉得我可能正在尝试使用Ajax。

1 个答案:

答案 0 :(得分: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()