我正在通过调用
从控制器加载的html填充页面$("#test").load("{% url 'simple_dataframe' %}");
'simple_dataframe'是pandas.to_html()方法,它为数据表jquery返回正确的html。
下一个脚本是:
<script>
$(document).ready(function () {
$('#df_table').DataTable();
});
</script>
哪个无法正确加载。我已经将返回的html复制到页面并仅使用DataTable jquery运行它,并且运行良好。因此,它与格式错误的html不相关。 我认为这与脚本调用的顺序有关。
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="{% static '/css/bootstrap.min.css' %}" type="text/css"/>
<link rel="stylesheet" href="{% static '/css/jquery.dataTables.css' %}" type="text/css"/>
<script src="{% static "js/jquery-3.3.1.min.js" %}"></script>
<script src="{% static 'js/jquery.dataTables.js' %}"></script>
</head>
<body>
<div id="test"></div>
<script>
$(document).ready(function () {
$("#test").load("{% url 'simple_dataframe' %}");
});</script>
<script>
$(document).ready(function () {
$('#df_table').DataTable();
});
</script>
</body>
</html>
答案 0 :(得分:1)
问题是因为load()
调用是异步的,因此您正在尝试在尚不存在的HTML上创建数据表。要解决此问题,请将DataTable()
调用放在load()
的回调中,如下所示:
$(function () {
$("#test").load("{% url 'simple_dataframe' %}", function() {
$('#df_table').DataTable();
});
});