未捕获的类型错误:Ajax调用中未定义数据



我的问题是我正在进行ajax服务器端调用以检索显示信息,我得到了一个JSON,它是一个内部有ArrayList of Objects的Object,但当我尝试进行调用时,我得到的表带有一个标签,上面写着Processing。。。所有时间和浏览器日志中的此错误。

有人知道为什么会发生这种事吗?

这是我的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>rn<head>rnt<title></title>rn</head>rn<body>Probando</body>rn</html>rn","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}

我做了以下更改:

  1. 因为JSON的行数据数组的名称为newsletters,所以需要在数据表的ajax部分中引用这个名称:"dataSrc": "newsletters"。这告诉DataTables在JSON中的何处查找行迭代器的起点。

  2. 从第1点开始,现在可以在columns部分中引用每个数组对象中的特定字段,例如:data: 'id'

  3. 为了在没有数据时简化-的使用,我建议使用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: "-"
}]
});
});

最新更新