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

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

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

DataTables的报错弹出框

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

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

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

1. DataTables 的ajax error处理


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

DataTables ajax error setting

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

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人,刘宇,谢谢,再见。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • error code(错误代码)=0是操作成功完成。error code(错误代码)=1是功能错误。error c...
    Heikki_阅读 3,472评论 1 9
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,812评论 25 709
  • <a name='html'>HTML</a> Doctype作用?标准模式与兼容模式各有什么区别? (1)、<...
    clark124阅读 3,623评论 1 19
  • 2017.10.26。无为。焦点解决第82天。人人都在追求完美,但世上并没有完美。再可口的饭菜,也会有人挑剔;再好...
    无为wyw阅读 104评论 0 1
  • 今日北京落雪,胖六从开始落雪时一直睡至晚上8点。 宝宝,外面下雪了,叫爸爸带你下去看好不好呀? 下雪啦,没有漂亮啦...
    柒月就是丸子7764阅读 184评论 0 1