jQuery DataTables:普通数组或对象

jQuery DataTables: Plain array or Object

使用jQuery及其插件DataTables,发现一些异常行为;如果我有一个对象,它会安静地工作;但是,如果我有一个普通数组,则会出现以下短语:"No data available in table".

我找到了显示普通数组内容的解决方案:

"ajax": {
  "url": "./pages/tabledata.php",
  "dataSrc": ""
}

但是当然在主题的情况下,脚本不起作用并返回上面给出的短语。

我的问题是:

您可以更改附加的代码以检查对象是否是普通数组?

提前致谢

$(document).ready(function() {

 if ($('#mytable').length) {

    $('#mytable').dataTable({
      "ajax": "./pages/tabledata.php",
      "columns": [
        {"data": "id", "visible": false, "searchable": false},
        {"data": "code"},
        {"data": "name"}
      ],
      "order": [ 1, 'asc']
    })
  }

});
<script src="https://cdn.datatables.net/1.10.4/js/jquery.dataTables.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

<table id="mytable" class="display">
  <thead>
    <tr>
      <th>ID</th>
      <th>Code of Data</th>
      <th>Name User</th>
    </tr>
  </thead>
</table>

JSON 对象:

{
    "data":[
        {
            "id":"1",
            "code":"PRF00001",
            "name":"Test 1"
        },{
            "id":"2",
            "code":"PRF00002",
            "name":"Test 2"
        }
    ]
}

JSON 对于普通数组:

{
    "data":{
        "id":"1",
        "code":"PRFS00001",
        "name":"Test 1"
    }
}

你的问题是数据表无法将普通数组格式中的 "data" 识别为数组,因此没有什么可列出的,因为它是一个对象。

但如果您将格式更改为:

{
  "data": [ //<=
    {
      "id":"1",
      "code":"PRFS00001",
      "name":"Test 1"
    }
  ] //<=
}

然后你会看到数据再次出现。

我在这里为你做了一个fiddle:http://jsfiddle.net/9chxhmk2/

这里引用了公认的 json 数据表格式:http://datatables.net/release-datatables/examples/server_side/post.html