2

我正在尝试在 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);     
}

这是数据表插件的初始化。

$('#companyDataTable').dataTable({
    bProcessing: true,
    sAjaxSource: '@Url.Action("GetCompanies", "Company")'
});

这是我的桌子的截图。

在此处输入图像描述

这是从插件返回的 JSON 数据Company/GetCompanies

{ "sEcho":null,
  "iTotalRecords":97,
  "iTotalDisplayRecords":3,
  "aaData":[ ["1","a1","a2","a3"],
             ["2","b1","b2","b3"],
             ["3","c1","c2","c3"]
           ]
}

jQuerDataTableParamModel是一个在这里显示的类。我也尝试了这个问题的答案,但没有一个对我有用。

编辑 :

这就是插件请求的样子。

在此处输入图像描述

有任何想法吗 ?

谢谢

4

2 回答 2

2

您需要返回与您的请求相同的 sEcho 值。在您的响应中,“sEcho”值为空,因此 DataTables 无法将请求与响应连接起来。

从数据表文档

sEcho从客户端发送的未更改的 sEcho 副本。这个参数会随着每次抽奖而改变(它基本上是一个抽奖次数)——所以实现这一点很重要。请注意,出于安全原因,强烈建议您将此参数“强制转换”为整数,以防止跨站点脚本 (XSS) 攻击。

于 2012-07-05T14:52:55.937 回答
0

对于 OP 来说可能为时已晚,但我猜您使用的是 1.10 版的 DataTables?

传入参数与早期版本完全不同,这就是为什么该教程中的自定义对象 (jQueryDataTableParamMode) 没有任何值绑定到它的属性。

此时,传入变量的 1.10 版的最新文档是在此处输入链接描述

你可以看到这谈论了一个名为“draw”的变量,它取代了旧的“sEcho”

版本 1.9 或更早版本的相同文档页面在这里

此外,这里是从 1.9 升级到 1.10的比较列表

于 2014-07-25T13:01:17.327 回答