Datatables1.10处理session timeout的解决方案

在系统中Web使用了Datatables1.10作为列表的展示控件, 遇到了这么一个问题: 

当用户停留在某个页面无操作超过15分钟时, 页面其实已经过期, 但因为datatables 用的是ajax调用后台,  其实后台已经返回了登录界面, 而datatables却只是弹出一个出错框, 极其不友好。

Datatables1.10处理session timeout的解决方案_第1张图片
DataTables的报错弹出框

针对以上效果,分解问题,需要解决以下问题:

1. DataTables 的ajax error处理,去掉错误信息弹出框;

2. 判断错误信息是页面过期,还是其它错误,然后提示信息;

1. DataTables 的ajax error处理


我去DataTables的官网找到了err文档 https://datatables.net/reference/event/error

Datatables1.10处理session timeout的解决方案_第2张图片
DataTables ajax error setting
Datatables1.10处理session timeout的解决方案_第3张图片

事不宜迟,赶紧加上代码试试,果然页面上没了弹出框,而是将错误打印到控制台中了,看图:

Datatables1.10处理session timeout的解决方案_第4张图片

2. DataTables 的ajax error处理


注意上图的错误信息,DataTable只是告诉你, 返回来的信息不是JSON格式,完全没办法知道具体信息是啥。

为了进一步处理,我找到了DataTables ajax的文档,

https://datatables.net/reference/option/ajax,根据描述,没有特殊的error处理,要用jquery.ajax来定义处理,这就好办咯。

Datatables1.10处理session timeout的解决方案_第5张图片

3. jQuery ajax设置error处理方式


我尝试了设置jQuery中关于ajax的很多种方式,最后用以下代码解决了问题,具体设置请自行查询jQuery文档,具体代码如下:

Datatables1.10处理session timeout的解决方案_第6张图片
最后使用的代码
Datatables1.10处理session timeout的解决方案_第7张图片
最终效果

结束语

问题至此已经解决了,但仔细想想,其实还有个更好的解决方案,就是发现需要重新登录时,可以弹出一个登录框(模态框),让用户登录后,当前页面不跳转,免得他填写了一个表单,一登录就跳转到另一个页面了,岂不是很抓狂?这个改进我准备留给team里的新人来做,我就记录到这了。

学海无涯,在学习的道路上,你并不孤单,希望本文可以帮助到相关的人,我是物流IT人,刘宇,谢谢,再见。

你可能感兴趣的:(Datatables1.10处理session timeout的解决方案)