2017-07-24 102 views
1

代码:点击提交按钮,一旦用户输入文本,应用程序就会击中其余的API,其数据格式为JSON。代码应该处理JSON数据并从jquery数据表中处理。jQuery DataTables:Uncaught TypeError:无法读取未定义的属性'长度'

$(document).ready(function() { 
       $('#txt').click(function() { 
        var requestData = $('#txtid').val(); 
        var url = '<my api url>' + requestData; 
        $('#resultDiv1').dataTable({ 
         "processing": true, 
         "ajax": url, 
         "columns": [ 
          {"": "account.id"}, 
          {"": "account.rel"}, 
          {"": "account.fin"}, 
          {"": "account.date"} 
         ], 
         "dom": "Bfrtip", 
         "buttons": [ 
          'copy', 'csv', 'excel', 'pdf', 'print' 
         ] 
        }); 
       }); 
      }); 

我试图形成从宁静的API jQuery的数据表,但得到下面的错误:

Uncaught TypeError: Cannot read property 'length' of undefined 
      at jquery.dataTables.min.js:48 
      at i (jquery.dataTables.min.js:35) 
      at Object.success (jquery.dataTables.min.js:35) 
      at fire (jquery-1.12.4.js:3232) 
      at Object.fireWith [as resolveWith] (jquery-1.12.4.js:3362) 
      at done (jquery-1.12.4.js:9840) 
      at XMLHttpRequest.callback (jquery-1.12.4.js:10311) 

Ajax响应:这是阿贾克斯从RESTAPI来的格式:

{ 
     "account": [ 
     { 
      "id": "1", 
      "rel": "P", 
      "fin": "abc", 
      "date": "2001-01-05" 
     }, 
     { 
      "id": "2", 
      "rel": "P", 
      "fin": "def", 
      "date": "2001-02-05" 
     }, 
     { 
      "id": "3", 
      "rel": "R", 
      "fin": "ghi", 
      "date": "2019-01-05" 
     } 
     ] 
    } 

有人可以请说明为什么会出现这种情况,我需要做些什么改变?

+0

请显示您的Ajax响应示例。 –

+0

@ Gyrocode.com:编辑了这个问题 – coder7

回答

1

带有jQuery DataTables的错误Unable to get property 'length' of undefined or null reference(IE)或Cannot read property 'length' of undefined(其他浏览器)通常意味着插件无法访问数据以响应Ajax请求。

使用ajax.dataSrc选项可以在包含数据的Ajax响应中指定数据属性(account)。

您的代码也丢失了正确的columns.data选项。

更改初始化选项如下:

$('#resultDiv1').dataTable({ 
    // ... skipped other options ... 
    "ajax": { 
     "url": url, 
     "dataSrc": "account" 
    }, 
    "columns": [ 
     {"data": "id"}, 
     {"data": "rel"}, 
     {"data": "fin"}, 
     {"data": "date"} 
    ] 
}); 

关于这个问题和其他共同控制台错误的详细信息,请参阅jQuery DataTables: Common JavaScript console errors

相关问题