Javascript 未捕获类型错误:无法读取属性';重新加载';未定义的

Javascript 未捕获类型错误:无法读取属性';重新加载';未定义的,javascript,jquery,datatables,Javascript,Jquery,Datatables,我在SpringBoot应用程序的Thymeleaf模板上使用Datatables定义了Datatable <script th:inline="javascript"> /*<![CDATA[*/ $(document).ready(function() { var table = $('#workerEventTable').dataTable( { order: [[ 0, "desc" ]], select: true,

我在SpringBoot应用程序的Thymeleaf模板上使用Datatables定义了Datatable

<script th:inline="javascript">
/*<![CDATA[*/   

$(document).ready(function() {

    var table = $('#workerEventTable').dataTable( {
        order: [[ 0, "desc" ]],
        select: true,
        bLengthChange: false,
        stateSave: true,
        pageLength: 20,
        ajax: 'http://127.0.0.1:1234/acerinox/api/workerevent/datatableList',      
           "columns": [
               { data: 'id' },
               { data: 'deviceId' },
               { data: 'companyName' },
               { data: 'description' },
               { data: 'battery' },
               { data: 'dateTime' },
               { data: 'signal' },           
               { data: 'data' },
               { data: 'alarm' }
           ] 
    });

    setInterval( function () {
        table.ajax.reload( null, false ); // user paging is not reset on reload
    }, 1000 );


    table.on('select.dt deselect.dt', function() {
          localStorage.setItem( 'DataTables_selected', table.rows( { selected: true }).toArray() )   
    })

} );

/*]]>*/
</script>
以下是我在模板中使用的所有导入:

<script th:src="@{/webjars/jquery/3.3.1/jquery.min.js}"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"    ></script>
<script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>

$(“#workerEventTable”)。dataTable(…)
不返回具有
.ajax
属性的对象。如果您想在ajax调用完成后执行某些操作,可以使用以下方法:

$('#example').dataTable( {
  "ajax": function (data, callback, settings) {
    callback(
      dostuff();
    );
  }
});

查看。

问题在于
dataTable()
返回的是jQuery对象,而不是Datatables API。您需要使用
DataTable()
,请注意大写字母D。第一个解释了这一点

是否有文档表明
dataTable
的返回值是具有
ajax
属性的对象?因为它显然不是…向代码中添加
console.log(table)
以查看
table
的实际属性是什么。您还可以添加
调试器位于失败行上方,检查
对象,悬停在该对象上方,钻取属性。问题是
dataTable()
返回的是jQuery对象,而不是Datatables API。您需要使用
DataTable()
代替,请注意大写字母
D
。第一个解释了这一点。@KThorngren,请转换为答案。它起作用了!
$('#example').dataTable( {
  "ajax": function (data, callback, settings) {
    callback(
      dostuff();
    );
  }
});