我已经使用 DataTables.Aspnet.Core & DataTables.AspNet.WebApi2 nugets 在 MVC 应用程序上设置了带有服务器端处理的 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
我认为是这种情况,因为我没有向客户端发送任何数据?
我怎样才能防止这个错误?
我无法通过添加空数据集在服务器端解决此问题,因为这不会与 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 || [];
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句