Javascript JSON格式的Ajax源数据-无法获取属性';长度';指未定义的或空的引用
我试图将json数据(从Web API ajax调用中检索)加载到jQuery DataTables,但出现以下错误: 中第38行第314列的未处理异常 0x800a138f-JavaScript运行时错误:无法获取属性“length” 指未定义的或空的引用 这是我的jQuery调用:Javascript JSON格式的Ajax源数据-无法获取属性';长度';指未定义的或空的引用,javascript,jquery,json,ajax,datatables,Javascript,Jquery,Json,Ajax,Datatables,我试图将json数据(从Web API ajax调用中检索)加载到jQuery DataTables,但出现以下错误: 中第38行第314列的未处理异常 0x800a138f-JavaScript运行时错误:无法获取属性“length” 指未定义的或空的引用 这是我的jQuery调用: $(document).ready(function () { $('#stat').DataTable({ "responsive": true, "paging":
$(document).ready(function () {
$('#stat').DataTable({
"responsive": true,
"paging": false,
"ordering": false,
"info": false,
"bFilter": false,
"processing": true,
"serverSide": true,
"ajax": {
'url': 'http://localhost:61178/api/financeStats'
}
});
});
这是从Web API调用检索到的JSON数据:
[
{
"Description": "Total Sas debt at yesterday",
"TotAgents": 788,
"TotAmount": 1767595.5854
},
{
"Description": "Total CL Sas with Rid worked yesterday",
"TotAgents": 413,
"TotAmount": 3026100
},
{
"Description": "Total CL Sas with No Rid worked yesterday",
"TotAgents": 164,
"TotAmount": 1252650
},
{
"Description": "Total Debt Sas with Rid to be cleared today",
"TotAgents": 35,
"TotAmount": 59448.7522
},
{
"Description": "Debt Sas with No Rid to be cleared today",
"TotAgents": 157,
"TotAmount": 478285.384
},
{
"Description": "Today Claim opened",
"TotAgents": 125,
"TotAmount": 146262.6726
},
{
"Description": "Today Claim still opened",
"TotAgents": 51,
"TotAmount": 113485.4991
},
{
"Description": "Today Claim opened & postponed",
"TotAgents": 18,
"TotAmount": 27726.748
},
{
"Description": "Today Claim closed by the operators",
"TotAgents": 8,
"TotAmount": 4540.1682
},
{
"Description": "Today Claim closed by the system",
"TotAgents": 47,
"TotAmount": -4699.3427
},
{
"Description": "Today Claim Locked Sdd",
"TotAgents": 1,
"TotAmount": 5209.6
},
{
"Description": "Today Claim Locked No Sdd",
"TotAgents": 0,
"TotAmount": 0
},
{
"Description": "Today Claim UnLocked proposal",
"TotAgents": 0,
"TotAmount": 0
},
{
"Description": "Overall Claim Locked Sdd",
"TotAgents": 3,
"TotAmount": 7196.54
},
{
"Description": "Overall Claim Locked No Sdd",
"TotAgents": 2,
"TotAmount": 1714.1
},
{
"Description": "Overall Claim Unlocked proposal",
"TotAgents": 3,
"TotAmount": -155.33
},
{
"Description": "Overall Workout",
"TotAgents": 541,
"TotAmount": 619838.3527
}
]
原因
错误无法获取未定义或空引用的属性“length”(IE)或无法使用jQuery DataTables读取未定义的属性“length”(其他浏览器),通常意味着插件无法响应Ajax请求访问数据
您的代码有几个问题
- 您已使用
serverSide:true
启用了服务器端处理模式,但数据的格式改为客户端处理模式。删除serverSide:true
以使用客户端处理模式
- 您的数据是对象数组。在这种情况下,您需要使用option在数据集中使用option为每个列定义属性名称
- 您需要使用
dataSrc:“
来匹配JSON数据格式,有关更多信息,请参阅李>
解决方案
使用以下代码:
$('#stat')。数据表({
“响应”:正确,
“分页”:false,
“命令”:错误,
“信息”:错误,
“搜索”:错误,
“ajax”:{
“url”:”http://localhost:61178/api/financeStats",
“dataSrc”:”
},
“栏目”:[
{“数据”:“描述”},
{“数据”:“TotAgents”},
{“数据”:“总额”}
]
});
演示
有关代码和演示,请参阅。Get“对象不支持属性或方法'DataTable'”error@Vkl125,很可能您忘记了包含DataTable v1.10 JS文件,或者使用旧的DataTable Library v.1.9。