我有一个数据表,我想在有新数据显示时追加行。我相对缺乏经验,所以我采取了简单的方法,并希望编写一个脚本,每秒检查数据库的更新,而不是监听服务器发送的事件。我尝试编写一个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。
答案 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()