Javascript Django模板:如何自动刷新jQuery数据表?

Javascript Django模板:如何自动刷新jQuery数据表?,javascript,jquery,ajax,django,datatables,Javascript,Jquery,Ajax,Django,Datatables,我是Django的新用户,遇到了一个问题。我希望自动刷新jquerydatatables数据,显示新的数据库内容,而无需重新加载整个html页面(使用ajax请求)。我浏览了很多帖子,但没有找到我的博客 这是我的Django template.html: {% block js %} <script type="text/javascript" language="javascript" class="init"> $(document).ready(function(){

我是Django的新用户,遇到了一个问题。我希望自动刷新jquerydatatables数据,显示新的数据库内容,而无需重新加载整个html页面(使用ajax请求)。我浏览了很多帖子,但没有找到我的博客

这是我的Django template.html:

{% block js %} 
<script type="text/javascript" language="javascript" class="init">
  $(document).ready(function(){
  var oTable = $('#db_name').DataTable();
  } );

  setInterval(function () {
      oTable.ajax.reload();
  }, 2000 );
} );

</script> 
{% endblock %}
问题是每2秒显示一条错误消息“Datatables警告:table id=db_name-无效JSON响应”。我认为这是正常的,因为没有JSON。尽管存在此错误,重新加载还是有效的:如果我进行手动刷新(F5),添加到我的数据库中的所有新数据(函数watch_files create entries in it)都会在我的页面中显示良好。 对我来说,理想的做法是获得透明的数据自动刷新,保持Datatables数组的当前排序/页面选项

我也尝试了这一点,试图传递JSON,但没有成功:

$(document).ready(function() {
  var oTable = $('#db_name').DataTable( {
      ajax: {{obj_as_json}}
  } ); 

  setInterval(function () {
      /* oTable.ajax.reload(); */
      oTable.fnReloadAjax();
      /* oTable.fnDraw(); */
  }, 2000 );
} );

def db_update(request):
    watch_files()
    all_ = db.objects.all()
    jsondata = serializers.serialize('json', all_)
    return render_to_response('supervision.html', {
        'obj_as_json':json.dumps(jsondata), 
        'all_fields': all_})
如果有人能帮助我,那就太好了。 Thks,Christophe

呈现到响应('supervision.html')
始终返回由
supervision.html
模板生成的html内容

您需要返回只包含json数据的对象

from django.http import JsonResponse
def db_update(request):
    watch_files()
    all_ = db.objects.all()
    if request.is_ajax():
        jsondata = serializers.serialize('json', all_)
        return JsonResponse(jsondata)
    else:
        return render_to_response('supervision.html', {
            'all_fields': all_})
此外,您需要将
all
变量转换为datatables期望的样子

{
   "data": [
      [ "column1_val",
        "column2_val",
         ...
      ],
    ]
}
我建议您查看一下实现

render\u to\u response('supervision.html')
始终返回由
supervision.html
模板生成的html内容

您需要返回只包含json数据的对象

from django.http import JsonResponse
def db_update(request):
    watch_files()
    all_ = db.objects.all()
    if request.is_ajax():
        jsondata = serializers.serialize('json', all_)
        return JsonResponse(jsondata)
    else:
        return render_to_response('supervision.html', {
            'all_fields': all_})
此外,您需要将
all
变量转换为datatables期望的样子

{
   "data": [
      [ "column1_val",
        "column2_val",
         ...
      ],
    ]
}

我建议你看一下执行情况

可能的重复谢谢你的回答,我会这样尝试!!谢谢你的回答,我会这样尝试!!