javascript - 未捕获的 TypeError:Ajax 调用中未定义数据
问题描述
我的问题是我正在进行 ajax 服务器端调用以检索显示信息,我得到一个 JSON,它是一个对象,里面有一个对象的 ArrayList,但是当我尝试进行调用时,我得到一个带有标签的表处理中...一直在浏览器日志中出现此错误。
有谁知道为什么会这样?
这是我的 HTML:
<table id="table_newsletterlist" class="display table">
<thead>
<tr>
<!-- Newsletters attributes -->
<th>Id</th>
<th>Asunto</th>
<th>Para</th>
</tr>
</thead>
<tfoot>
<tr>
<!-- Newsletters attributes -->
<td>Id</td>
<td>Asunto</td>
<td>Para</td>
</tr>
</tfoot>
</table>
这是我的JS:
$('#table_newsletterlist').DataTable({
"processing": true,
"serverSide": true,
"ajax": newsletterUrl,
"columns": [
{
"data": "newsletters",
render: function (data){
return (data.id) ? data.id : "-";
}
},
{"data": "newsletters",
render: function (data){
return (data.target) ? data.target : "-";
}},
{"data": "newsletters",
render: function (data){
return (data.subject) ? data.subject : "-";
}},
]
});
这里是我得到的 JSON:
{"total":188,"newsletters":[{"id":1,"subject":"Prueba","target":"groups","html":"<html>\r\n<head>\r\n\t<title></title>\r\n</head>\r\n<body>Probando</body>\r\n</html>\r\n","sender_id":1,"campaign_folder_id":null,"segment_id":null,"group_ids":[],"preview_text":null,"editor_type":"html","url_token":false,"analytics_utm_campaign":"","use_premailer":false}, {more objects like the first...}],"perPage":10,"page":1}
解决方案
我做了以下更改:
因为您的 JSON 的行数据数组具有名称
newsletters
,所以您需要在数据表的 ajax 部分中引用此名称:"dataSrc": "newsletters"
。这告诉 DataTables 在 JSON 中查找其行迭代器的起点的位置。从第 1 点开始,现在您可以在您的
columns
部分中引用每个数组对象中的特定字段 - 例如:data: 'id'
.为了简化
-
没有数据时的使用,我推荐使用defaultContent: "-"
. 您可以使用渲染功能 - 但对于您的具体示例,这比您需要的更复杂。
最终结果如下:
$(document).ready(function() {
$('#table_newsletterlist')
.DataTable({
"processing": true,
"serverSide": true,
"ajax": {
"url": "http://localhost:7000/newsletters",
"type": "POST",
"dataSrc": "newsletters"
},
"columns": [{
data: 'id',
defaultContent: "-"
}, {
data: 'subject',
defaultContent: "-"
}, {
data: 'target',
defaultContent: "-"
}, {
data: 'preview_text',
defaultContent: "-"
}]
});
});
推荐阅读
- android - 在循环内对 Recycleview 适配器进行排序
- twitter-bootstrap - Bootstrap 4.3.1 使用 Gulp 和 .sass 文件(不是 .scss)更改断点
- c# - 通用且快速地对属性执行计算
- ieee-754 - IEEE-754 中的“交换格式”是什么意思?
- java - 当我在java中启动一个线程时,方法run()没有运行
- vb.net - 将通过 VB.net 创建的自动递增 ID 从父表填充到 SQLite 中的多个子表
- javascript - 删除过去的日期 - Jquery Datepicker
- powershell - SMART Hard Drive INFO Powershell
- excel - 循环并仅用一个替换两个或多个空格
- azure-data-factory - 多个数据流与所有转换合二为一