2017-08-04 133 views
0

我已经在使用DataTables.Aspnet.Core的MVC应用程序上处理服务器端的datatables.net & DataTables.AspNet.WebApi2的nugets。所有的工作都很好,数据被加载并显示正常。datatables.net:服务器端处理的错误处理

如果在服务器端的问题,我捕捉到了异常,并返回一个包含我的自定义错误消息的结果:

// IDataTablesRequest tableRequest 
return new DataTablesJsonResult(Response.Create(tableRequest, "my custom error message"), Request); 

在我已经注册了该错误事件以及客户端:

$.fn.dataTable.ext.errMode = 'none'; 
this.$dataTable.on('error.dt', this.onDataTableError.bind(this)); 

这也很好,我可以解析响应并检查我的自定义消息。

现在问题:处理完错误后,我总是得到可怕的Uncaught TypeError: Cannot read property 'length' of undefined我认为这是因为我没有发送任何数据到客户端?

如何防止此错误?

回答

0

我无法通过添加一个空数据集来解决这个问题,因为这不会与json一起传递。

我最终什么事做的是确保始终有客户端上的数据阵列:

// register to ajax request event 
this.$dataTable.on('xhr.dt', this.afterAjax.bind(this)); 

// set empty array to make sure we have no issue 
// with null references on data.length for loop 
afterAjax(event: JQueryEventObject, settings: any, payload: any, response: any): void { 
     payload.data = payload.data || []; 
}