ajax - 如何使用 Json 数据生成 DataTable
问题描述
我有 API 调用 abd,它将返回 Json,如下所示
{
"status": true,
"message": "Data Sent",
"data": [
{
"id": 9,
"name": "North",
"colType": 7,
"userID": 0,
"isVisible": false
}
]
}
下面我有 JavaScript Ajax 调用,但它返回空数据表,请帮忙
$('#myTable').DataTable({
destroy: true,
responsive: true,
"ajax": {
"url": url+'/api/CommonMasters/7/GetByUserID/'+@ViewBag.UID,
"type": "GET",
"datatype": "json",
},
"lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
"columns": [
{ "data": "name", "autoWidth": true },
{
"render": function (data, type, full, meta) { return "<a id='Edit' class='btn btn-info' onclick='editRefUser(" + full.id + ")' ;>Edit</a>"; }
},
]
});
解决方案
在 ajax 部分,您需要定义数据源:"dataSrc": "data"
.
"ajax": {
"url": url+'/api/CommonMasters/7/GetByUserID/'+@ViewBag.UID,
"type": "GET",
"datatype": "json",
"dataSrc": "data"
},
为什么需要这个?您的 JSON 数据结构在顶层没有“名称”项。名称嵌套在顶级“数据”对象中。这个额外的指令告诉 DataTables 只查看 JSON 的“数据”对象作为它的起点。
有关相关文档,请参见此处:
ajax 选项基本上继承了 jQuery.ajax 提供的所有选项,但我们提供了 dataSrc 的额外选项,以提供更改 DataTables 将从服务器返回的 JSON 中读取的数据的能力......
另外,在不相关的说明中,我认为您不需要这个:destroy: true
-尝试将其删除。在初始化表对象时尝试销毁它可能没有意义。
推荐阅读
- python-2.7 - 如何使用 urllib2 将文件从桌面上传到 jupyter notebook?
- java - 带有特殊字符的 Solr 字符串字段搜索
- git - 如何将现有项目导入到 intellij idea 中现有的私有 github 存储库?
- php - PDO ERROR: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: 绑定变量数与标记数不匹配
- ruby - 为什么“ObjectSpace.count_objects”的总对象数没有变化?
- r - R中的有向图上的随机游走
- assembly - X.86 X64 汇编器中的正确堆栈操作
- java - 从 Azure IoT 向 esp8266 发送命令
- sql - 如果列已经自己建立索引,那么创建多列索引是否有帮助?
- linux - 提高使用 ffmpeg 制作幻灯片视频的性能