输出中的数据表 json 问题:无法设置未定义的属性“nTf”

Posted

技术标签:

【中文标题】输出中的数据表 json 问题:无法设置未定义的属性“nTf”【英文标题】:Datatables json issue in output: Cannot set property 'nTf' of undefined 【发布时间】:2019-12-29 20:26:04 【问题描述】:

我有以下代码将 JSON 数据放入数据表中。直接访问Json URL就可以了; JSON 已验证。然而,没有任何东西加载到表中。

是JS里面有什么东西还是CDN包含的顺序不对?根据几个例子,这应该有效。感谢您的帮助!

<html lang="en">

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous" type="text/css">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.19/css/dataTables.bootstrap4.min.css" type="text/css">
  <title>Table</title>
</head>

<body>
  <table class="table table-hover table-stripe" id="example_table">
    <thead>
      <tr>
        <td>User</td>
        <td>Party</td>
        <td>Agent</td>
      </tr>
    </thead>
    <tfoot>
      <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
      </tr>
    </tfoot>
  </table>

  <!-- jQuery first, then Popper.js, then Bootstrap JS -->
  <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous" type="text/javascript">
  </script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous" type="text/javascript">
  </script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous" type="text/javascript">
  </script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.19/js/dataTables.bootstrap4.min.js" type="text/javascript">
  </script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.19/js/jquery.dataTables.min.js" type="text/javascript">
  </script>
  <script type="text/javascript">
    var example_table = $('#example_table').DataTable(
      ajax: 
        url: 'json_user.php', // the url to get data from
        dataSrc: function(data) 
          return data.data; // returning the source of the data (it requires an array of data)
        
      ,
      columns: [
        data: "USERID" // 1st column will render the "id" from data
      , 
        data: "PARTYID" // 2nd column will render the "name" from data
      , 
        data: "Agent" // 3rd column will render the "position" from data
      ]
    );
  </script>
</body>
</html>

我的 JSON 看起来像这样:


  "data": [
      "PARTYID": "9999",
      "USERID": "oaeg",
      "REG_DATE": "2017-04-11 10:19:24",
      "LAST_DEPOSIT_DATE": null,
      "LAST_DEPOSIT_AMOUNT": null,
      "LAST_WITHDRAW_DATE": null,
      "LAST_WITHDRAW_AMOUNT": null,
      "AgentID": null,
      "Agent": "John"
    , 
      "PARTYID": "1000001",
      "USERID": "Master",
      "REG_DATE": "2019-03-08 16:03:52",
      "LAST_DEPOSIT_DATE": null,
      "LAST_DEPOSIT_AMOUNT": null,
      "LAST_WITHDRAW_DATE": null,
      "LAST_WITHDRAW_AMOUNT": null,
      "AgentID": null,
      "Agent": null
    ,
    // ...
  ]

【问题讨论】:

【参考方案1】:

控制台的第一个错误:

无法设置未定义的属性“nTf”

是因为您在页脚中的td 元素比在表格的其余部分中的要多。修复后,您会收到此错误:

TypeError: h.ajax 不是函数

这是因为您使用的是 jQuery 的“slim”分支,它删除了很多功能,主要与动画和 AJAX 相关。后者是此工作所必需的。因此你需要使用完整版的jQu​​ery:

<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>

一旦您解决了这些问题,您的代码应该可以正常工作,假设 JSON 按预期返回。

【讨论】:

以上是关于输出中的数据表 json 问题:无法设置未定义的属性“nTf”的主要内容,如果未能解决你的问题,请参考以下文章

NestJS/TypeORM:无法读取未定义的属性“createQueryBuilder”

NextJS:TypeError:无法读取未定义的属性“json”

无法读取未定义 discord.js 的属性“名称”尝试读取 json 中的数组

无法从 JSON 获取某些数据,返回未定义的 Angular 6

select2:使用ajax获取json时“文本未定义”

为啥从 json 操作中检索到的数据显示为未定义?