我无法指定问题的原因/位置,这是我的代码:
HTML:
var result = new
{
rows = (from company in db.Company.ToList()
select new
{
id = company.CompanyId,
RegNo = company.RegestrationNumber,
Name = company.Name,
Industry = company.IndustryType.Name,
Size = company.CompanySize.Name,
LineOfDefence = company.LineOfDefence.Name,
Address = company.Address
}).ToArray()
};
return Json(result, JsonRequestBehavior.AllowGet);
服务器端:
<script>
$(document).ready(function ()
{
$('#companies').DataTable( {
"ajax": {
url: "/Company/GetCompanyGrid",
type: "GET",
dataType: "json"
}
});
});
</script>
这是我的Ajax Call:
@RequestMapping(method = RequestMethod.POST)
我收到此错误:&#34; jquery.dataTables.min.js:181 Uncaught TypeError:无法读取属性&#39; length&#39;未定义&#34;
注意:我使用的是jquery-1.12.3.js&amp; DataTables 1.10.12。
任何帮助都将不胜感激。
答案 0 :(得分:1)
最后我发现了问题:
首先:datatables需要特定的格式,所以我改变了我的服务器端代码:
File::Temp->new()
第二:我已将这些行添加到我的脚本
var result = new
{
**draw = 1,
recordsTotal = db.Company.ToList().Count,
recordsFiltered = db.Company.ToList().Count,**
data = (from company in db.Company.ToList()
select new
{
Id = company.CompanyId,
RegNo = company.RegestrationNumber,
Name = company.Name,
Industry = company.IndustryType.Name,
Size = company.CompanySize.Name,
LineOfDefence = company.LineOfDefence.Name,
Address = company.Address,
}).ToArray()
};
return Json(result
, JsonRequestBehavior.AllowGet);
现在它完美无缺。
答案 1 :(得分:0)
Datatables期望返回的json采用特定格式,根据documentation - 请参阅“返回数据”部分。
你的json应该是这样的:
return Json(new
{
param.draw,
recordsTotal = result.Count,
recordsFiltered = result.Count,
data = result
}, JsonRequestBehavior.AllowGet);
错误可能是数据表查找不存在的字段的结果。请注意,draw
值是在原始GetCompanyGrid()
请求中发送的,您无需自行生成。