我使用DataTables.Aspnet.Core& amp;在MVC应用程序上使用服务器端处理设置了datatables.net。 DataTables.AspNet.WebApi2 nugets。一切正常,数据加载并显示正常。
如果服务器端出现问题,我会捕获异常并返回包含我的自定义错误消息的结果:
// 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 :(得分: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 || [];
}