JQuery Datatables:无法读取未定义的 'aDataSort' 属性。

127

我创建了这个fiddle并根据我的要求很好地工作:Fiddle

然而,当我在我的应用程序中使用相同的代码时,浏览器控制台会显示一个错误,内容为Cannot read property 'aDataSort' of undefined

在我的应用程序中,JavaScript 代码如下所示:我已检查了控制器输出……它工作正常,并且也在控制台上打印出来。

$(document).ready(function() {

    $.getJSON("three.htm", function(data) {
             // console.log("loadDataTable >>  "+JSON.stringify(data));
             })
             .fail(function( jqxhr, textStatus, error ) {
             var err = textStatus + ', ' + error;
             alert(err);
             console.log( "Request Failed: " + err);
             })
             .success(function(data){
                 loadDataTable(data);
             });

    function loadDataTable(data){
         $("#recentSubscribers").dataTable().fnDestroy();    
         var oTable = $('#recentSubscribers').dataTable({
             "aaData" : JSON.parse(data.subscribers),
             "processing": true,
            "bPaginate": false,
            "bFilter": false,
            "bSort": false,
            "bInfo": false,
            "aoColumnDefs": [{
            "sTitle": "Subscriber ID",
            "aTargets": [0]
        }, {
            "sTitle": "Install Location",
            "aTargets": [1]
        }, {
            "sTitle": "Subscriber Name",
            "aTargets": [2]
        }, {
            "aTargets": [0], 
            "mRender": function (data, type, full) {
                return '<a style="text-decoration:none;" href="#" class="abc">' + data + '</a>';
            }
        }],
            "aoColumns": [{
            "mData": "code"
        }, {
            "mData": "acctNum"
        }, {
            "mData": "name"
        }]
            });

    }       

})

请确保您包含的代码与fiddle中的代码相同(并非如此),也与您正在运行的代码相同。此外,在fiddle中,您有两个aTargets [0],请检查:http://jsfiddle.net/gL0p0t42/ - Leandro Carracedo
您没有提供实际调用“aDataSort”的源代码。 - Daniel
你是指HTML表格的ID吗?这个我已经处理好了。让我试着只有一个目标。 - swateek
2
与此相关的(更新的)问题和答案,请参见以下链接:https://dev59.com/5ovda4cB1Zd3GeqPUQ-h - Nikos M.
1
我曾经遇到过同样的问题,后来发现是因为我按照一个不存在的列数进行排序。我的表格只有三列,但我却按照第五列进行排序了。 - mercury
显示剩余2条评论
15个回答

2

我曾经遇到过这个问题,原因是另一个脚本删除了所有的表格并重新创建它们,但我的表格没有被重新创建。在我注意到我的表格甚至在页面上都不可见之前,我花费了很长时间来解决这个问题。在初始化DataTables之前,您能看到您的表格吗?

本质上,其他脚本正在执行以下操作:

Original Answer翻译成"最初的回答"

let tables = $("table");
for (let i = 0; i < tables.length; i++) {
  const table = tables[i];
  if ($.fn.DataTable.isDataTable(table)) {
    $(table).DataTable().destroy(remove);
    $(table).empty();
  }
}

最初的回答应该是:

它应该一直在执行以下操作:

let tables = $("table.some-class-only");
... the rest ...

1
我尝试同时初始化页面上的多个表格,导致出现了错误,如下所示:

$('table').DataTable();

经过多次尝试,我单独初始化它们后,错误消失了:

$("#table1-id").DataTable();
$("#table2-id").DataTable();

1

对我来说,在这种格式中添加列

columns: [
    { data: 'name' },
    { data: 'position' },
    { data: 'salary' },
    { data: 'state_date' },
    { data: 'office' },
    { data: 'extn' }
]

以此格式使用ajax。
 ajax: {
  url: '/api/foo',
  dataSrc: ''
},

对我来说解决了。


0

虽然这是一个老问题,但在我的情况下,我在URL中传递了一个无关的order=参数,有时会为空。一旦我将url变量更改为“sortorder”或任何其他不同于“order”的名称,插件就开始正常工作。


0

我遇到了同样的错误,在我的情况下,其中一列没有接收到正确的数据。有些列中放置了字符串而不是整数。在我修复它之后,它开始正常工作。在大多数情况下,问题是“表格未接收到正确的数据”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接