DataTables - _fnAjaxDataSrc - 无法读取未定义的属性"length"

Nic*_*ahn 5 javascript jquery jquery-plugins datatables

当我进一步检查调试时,我发现它确实传递了json数据,这里是调试的屏幕截图.

在此输入图像描述 在此输入图像描述 在此输入图像描述 演示PLNKR

<html>
<head>
  <link 
  <script data-require="jquery@*" data-semver="2.0.3" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
  <script src="https://cdn.datatables.net/1.10.4/js/jquery.dataTables.js" data-semver="1.9.4" data-require="datatables@*"></script>
  <script data-require="bootstrap@*" data-semver="3.1.1" src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
  <link rel="stylesheet" href="style.css" />
  <script src="app.js"></script>
</head>

<body>
  <table id="myDataTable" class="table table-striped table-bordered">
    <thead>
      <tr>
        <th>primaryGenreName</th>
        <th>country</th>    
      </tr>
    </thead>
    <tbody>
    </tbody>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Nik*_*car 5

您正在将旧的旧版datatablesapi与新版本的数据表混合使用.

使用新API:

由于该JSON数据源的跨域策略,我没有设法使用"Demo PLNKR"示例:

跨源请求已阻止:同源策略禁止在https://itunes.apple.com/search?term=apple&_=1421706895095上读取远程资源 .这可以通过将资源移动到同一域或启用CORS来解决.

最后我的建议是:

更改sAjaxSourceajax,aoColumnscolumns,mDatadata...

处理您获得的JSON格式Ajax响应,使用数据列字段示例正确映射.如果你使用itunes结果,它将是这样的:

"ajax": {
    "url" : "https://itunes.apple.com/search?term=apple",
    "dataSrc" : "results"
},
"columns": [
 {"data": "artistName"},
 {"data": "collectionName"},
 {"data": "trackName"},
 {"data": "collectionCensoredName"},
 {"data": "trackCensoredName"},
 {"data": "artistViewUrl"},
 ...
]
Run Code Online (Sandbox Code Playgroud)