【问题标题】:DataTables: .ajax is not defined?DataTables:.ajax 没有定义?
【发布时间】:2026-01-05 08:15:01
【问题描述】:

我正在使用 DataTables 成功显示一些 JSON 数据。我想用一些稍微不同的 JSON 重新加载数据源,但我遇到了错误。

我用这一行调用 DataTables:

<script type="text/javascript" src="https://cdn.datatables.net/v/bs4/jqc-1.12.4/dt-1.10.18/datatables.min.js"></script>

我正在用这个 JS 代码初始化 DataTables:

$(function(){
    var apiUrl = '/api/people.php';
    var table = dt('#peopleTable').dataTable({
        ajax: {
            dataType: 'text',
            type: 'POST',
            url: apiUrl,
            dataSrc: function (json) {
                return $.parseJSON(json);
            }
        },
        columns: [...] // column definitions here
    });

到目前为止,所有这些都运行良好,没有问题。问题接踵而至……

所以我有这个点击处理程序:

    $('.people-type').on('click', function(){
        var id = $(this).data('id');
        table.ajax.url(apiUrl + '?type=' + id).load();
        table.draw();
    });

当这个点击处理程序运行时,我被告知table.ajax is not defined。确实console.log(table); 揭示了同样的事情,尽管table 似乎确实绑定到一个看起来像DataTables 对象的东西:

文档告诉我我的代码是正确的:https://datatables.net/reference/api/ajax.url().load()#Example

但显然我的 DataTables 没有 ajax 方法。谁能解释这里发生了什么?

【问题讨论】:

    标签: jquery datatables


    【解决方案1】:

    我认为您的问题是 dataTable() 与 DataTable()。检查this。在您的 javascript 中,将 var table = dt('#peopleTable').dataTable 行替换为 var table = dt('#peopleTable').DataTable 并检查 ajax 是否正常工作

    【讨论】:

    • 哦,我不敢相信这是问题所在!现在踢自己 - 非常感谢
    最近更新 更多