Javascript Django模板:如何自动刷新jQuery数据表?
我是Django的新用户,遇到了一个问题。我希望自动刷新jquerydatatables数据,显示新的数据库内容,而无需重新加载整个html页面(使用ajax请求)。我浏览了很多帖子,但没有找到我的博客 这是我的Django template.html: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(){
{% 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",
...
],
]
}
我建议你看一下执行情况可能的重复谢谢你的回答,我会这样尝试!!谢谢你的回答,我会这样尝试!!