在系统中Web使用了Datatables1.10作为列表的展示控件, 遇到了这么一个问题:
当用户停留在某个页面无操作超过15分钟时, 页面其实已经过期, 但因为datatables 用的是ajax调用后台, 其实后台已经返回了登录界面, 而datatables却只是弹出一个出错框, 极其不友好。
针对以上效果,分解问题,需要解决以下问题:
1. DataTables 的ajax error处理,去掉错误信息弹出框;
2. 判断错误信息是页面过期,还是其它错误,然后提示信息;
1. DataTables 的ajax error处理
我去DataTables的官网找到了err文档 https://datatables.net/reference/event/error
事不宜迟,赶紧加上代码试试,果然页面上没了弹出框,而是将错误打印到控制台中了,看图:
2. DataTables 的ajax error处理
注意上图的错误信息,DataTable只是告诉你, 返回来的信息不是JSON格式,完全没办法知道具体信息是啥。
为了进一步处理,我找到了DataTables ajax的文档,
https://datatables.net/reference/option/ajax,根据描述,没有特殊的error处理,要用jquery.ajax来定义处理,这就好办咯。
3. jQuery ajax设置error处理方式
我尝试了设置jQuery中关于ajax的很多种方式,最后用以下代码解决了问题,具体设置请自行查询jQuery文档,具体代码如下:
结束语
问题至此已经解决了,但仔细想想,其实还有个更好的解决方案,就是发现需要重新登录时,可以弹出一个登录框(模态框),让用户登录后,当前页面不跳转,免得他填写了一个表单,一登录就跳转到另一个页面了,岂不是很抓狂?这个改进我准备留给team里的新人来做,我就记录到这了。
学海无涯,在学习的道路上,你并不孤单,希望本文可以帮助到相关的人,我是物流IT人,刘宇,谢谢,再见。