jQuery Datatable 未捕获 TypeError:无法读取未定义的属性“length”
2017-08-10
6891
我发现这是一个很常见的问题。我之所以发布这个问题,是因为我尝试与 SO 上的其他人一起调查我的问题,但无济于事。
------------------我正在使用旧版 jquery 数据表---------------------
我看到了不一致的行为。我有两个数据表,它们在各个方面都相同,只是每个数据表都与不同的控制器通信。一个数据表填充完美,而另一个数据表在 jQuery 代码中给出了此错误。
我获取了 json 数据,但 _fnGetObjectDataFn( oSettings.sAjaxDataProp )(json) 将 aData 设置为未定义! 说什么? 这是 json 数据:
为确保问题不是由于列数不正确,我将表格最小化为只有一列。这是弹出表格视图的 javaScript:
initBuildingsTable = function () {
$('#selectableAssetTable').dataTable({
"bPaginate": false,
"bProcessing": true,
"bAutoWidth": true,
"aoColumns": [
{ "mDataProp": "SiteName", "bSortable": true },
],
"aoColumnDefs": [
{ "mDataProp": null, "sDefaultContent": " ", "aTargets": [-1] }
],
"sDom": '<"top">rt<"bottom"><"clear">',
"oLanguage": {
"sEmptyTable": "No data found."
},
"sAjaxSource": $.baseURL("api/selfservice/getsites"),
"fnServerData": function (sSource, aoData, fnCallback) {
$.ajax({
url: sSource, // Do not add the base to this. It should already be present
type: "GET",
dataType: "json",
success: fnCallback,
complete: function () {
alert("show me the data!")
}
});
}
});
}
这是表格的 HTML:
<table id="selectableAssetTable" style="width: 100%; ">
<thead>
<tr>
<th>Site Name</th>
</tr>
</thead>
<tbody></tbody>
</table>
这是从控制器返回的数据的 DTO:
public class SiteDTO
{
public decimal SiteId { get; set; }
public string SiteName { get; set; }
public string Address { get; set; }
public string Contact { get; set; }
}
1个回答
您可以在监视窗口中看到
oSettings.sAjaxDataProp = "aaData"
,因此您应该寻找一个名为“aaData”的对象来进行迭代。但您使用的“aData”默认情况下未定义。
Niladri
2017-08-10