我正在尝试在ASP.NET MVC应用程序中使用JQuery Datatable插件。但是,虽然我的控制器将JSON数据返回到插件,但该表显示Loading...
消息并且卡在那里。
这是我的控制器,
public ActionResult GetCompanies(jQueryDataTableParamModel param)
{
return Json(new
{
sEcho = param.sEcho,
iTotalRecords = 97,
iTotalDisplayRecords = 3,
aaData = new List<string[]>() {
new string[] {"1", "a1", "a2", "a3"},
new string[] {"2", "b1", "b2", "b3"},
new string[] {"3", "c1", "c2", "c3"}
}
}, JsonRequestBehavior.AllowGet);
}
这是datatable插件的初始化。
$('#companyDataTable').dataTable({
bProcessing: true,
sAjaxSource: '@Url.Action("GetCompanies", "Company")'
});
这是我桌子的截图。
这是从Company/GetCompanies
{ "sEcho":null,
"iTotalRecords":97,
"iTotalDisplayRecords":3,
"aaData":[ ["1","a1","a2","a3"],
["2","b1","b2","b3"],
["3","c1","c2","c3"]
]
}
jQuerDataTableParamModel
是一个显示here的类。我也尝试了question的答案,但没有一个对我有效。
编辑:
这就是插件请求的样子。
有什么想法吗?
由于
答案 0 :(得分:2)
您需要返回与请求相同的sEcho值。在您的响应中,“sEcho”值为null,因此DataTables无法将请求与响应连接起来。
来自DataTables documentation:
sEcho 从客户端发送的未经更改的sEcho副本。此参数将随每次抽奖而变化(基本上是抽奖计数) - 所以实施这一点很重要。请注意它强烈 出于安全原因建议您将此参数“强制转换为” 整数,以防止跨站点脚本(XSS)攻击。
答案 1 :(得分:0)
对于OP来说可能为时已晚,但我猜测你使用的是DataTables的1.10版本?
传入的参数与早期版本完全不同,这就是为什么该教程中的自定义对象(jQueryDataTableParamMode)没有任何绑定到它的属性的原因。
目前,传入变量版本1.10的最新文档为enter link description here
你可以看到这个谈论一个名为&#34; draw&#34;的变量。它取代了旧的&#34; sEcho&#34;
版本1.9或更早版本的相同文档页面为here
此外here is a comparison list用于从1.9升级到1.10