我有一个MVC项目,它连接(通过控制器)到MS SQL Server,获取数据集,并使用以下结构在DataTables上显示它:
$(document).ready(function () {
// Call table data from controller action
$.getJSON("/Home/MyAction", { DateShow: "@ViewBag.TblCurrentDate" },
function (json) {
// Append each row to html table
var tr;
for (var i = 0; i < json.length; i++) {
tr = $('<tr/>');
tr.append("<td>" + json[i]["Column Name 1"] + "</td>");
tr.append("<td>" + json[i]["Column Name 2"] + "</td>");
tr.append("<td>" + json[i]["Column Name 3"] + "</td>");
...
tr.append("<td>" + json[i]["Column Name 20"] + "</td>");
$('#MyTable').append(tr);
}
// Set table name and apply datetable settings
var dt_olktable = $('#MyTable').DataTable()
});
});
因此,如果我从SQL得到1500行和20列的数据集,它就可以完美地工作(1-2秒)。如果我有2000行甚至更多,有20列,我在VS2015 Diagnostoc工具的事件部分看到一个“错误页面” - 就在事件“GET”/ Home / MyAction“之后。我试着设置一个断点c#controller class。控制器已成功获取数据集,将其放入json并将json返回到之前显示的jquery代码。此外,Chrome Dev Tools面板中没有错误。我所知道的:我把断点放到
var tr;
行,断点永远不会被触发,所以在
附近发生了一些事情$.getJSON("/Home/MyAction", { DateShow: "@ViewBag.TblCurrentDate" },
function (json) {
行。
如果我减少数据的数量(f.e. 1500行,20列),一切正常!对于使用客户端处理的DataTables,2000行* 20列可能太多了吗?或者也许有像溢出的东西
for (var i = 0; i < json.length; i++) {
行?
答案 0 :(得分:0)
$.getJSON()
函数只有success
回调。它没有fail
回调,因此如果有任何异常,它通常会无声地失败,即使在调试中也无法看到错误。
将其更改为$ajax()
,为fail
回调提供函数,在其中放置断点,您将看到错误。