我在使用Datatables.net 1.10.9和WebApi Controller时遇到了麻烦。
我写了一个简单的Datatable示例:
$(document).ready(function () {
$('#tableJQDataTable1').DataTable({
"processing": true,
"serverSide": true,
"ajax": {
"type": 'POST',
"url": '/api/prova/LoadData',
"dataSrc": function (json) {
var ret = JSON.parse(json);
return ret;
}
},
"autoWitdh": true,
"scrollY": 200,
"scrollCollapse": true,
"lengthChange": true,
"lenghtMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
"paging": true,
"pageLength": 20,
"pagingType": "full_numbers",
"columns": [
{ "data": "CodiceColore" },
{ "data": "Descrizione" }
]
});
});
WebApi控制器是:
[HttpPost]
public string LoadData(DTParameters param)
{
string retValue = string.Empty;
using (TestDataController m_dc = new TestDataController())
{
m_dc.Initialize();
IQueryable<AnagraficaColori> m_anagraficaColori = m_dc.GetColori();
var m_data = m_anagraficaColori.ToList();
DTResult<AnagraficaColori> result = new DTResult<AnagraficaColori>
{
draw = param.Draw,
data = m_data,
recordsFiltered = m_data.Count(),
recordsTotal = m_data.Count()
};
retValue = JsonConvert.SerializeObject(result);
}
return retValue;
}
我得到了DTParameters和DTResult&lt;&gt;例如:https://www.echosteg.com/jquery-datatables-asp.net-mvc5-server-side
我没有使用MVC应用程序进行测试,而是使用配置为使用WebApi的简单WebForms应用程序。
问题是我无法显示数据。
WebApi控制器的返回值为:
{"draw":1,"recordsTotal":1,"recordsFiltered":1,"data":[{"CodiceColore":"C110OP","Descrizione":"Ciliegio C001 "}]}
所以它似乎是正确的形式,包含数据表所需的所有返回参数。
如果我在dataSrc函数中放置断点,我会看到包含此值的ret值:
Object {draw: 1, recordsTotal: 1, recordsFiltered: 1, data: Array[1]}
这似乎没问题。
但是,Datatables显示消息:“找不到匹配的记录”,并且没有显示任何内容。
我错过了什么?
问候,朱塞佩。
答案 0 :(得分:1)
您既不应该设置type
也不应该尝试解析响应。
"ajax": {
"url": "/api/prova/LoadData",
}
然后您的代码有效 - &gt;的 http://jsfiddle.net/rdhkf2rk/ 强>
答案 1 :(得分:0)
我认为您应该在Ajax调用中使用GET
请求而不是POST
请求。
"ajax": {
"type": 'GET',
"url": '/api/prova/LoadData',
"dataSrc": function (json) {
var ret = JSON.parse(json);
return ret;
}
},