如何监听所有layui内部(如table)请求的响应结果并做出相应的处理

提问 未结 0 149
woshinicheng
woshinicheng 2019-11-8
悬赏:20飞吻
版本:layui 浏览器:
前面有点啰嗦 最终需求在最下面


如图 这是之前登录超时的判断 如果超时会向相应头里写入 sessionstatus=timeout
依此来判断是否有ajax请求时登录超时 然后跳转

之后引用layui的表格使用其内构的去请求却发现不属于之前js中校验的类型

这样即使请求头里写入了 sessionstatus=timeout页面上也无法抓取所有这类的请求

起步我就想监听页面所有类型的请求来进行ResponseHeader的判断
于是我就写成了这么个东西(当然希望有更好的或者已经完善的方法,自己写的自己都有点看不下去[可怜] )


出现了三个重大问题
问题一.onreadystatechange的函数委托很不成功
我得理想情况是只放开2 不用1 但是这时委托的onreadystatechange是null
每次readyState改变时是不会调用我得方法
也就代表没什么卵用

问题二.当我用1 不用2的时候他会有几率成功 不知道为什么
成功的时候readyState会从0输出到4 都会进入 这时会进入我得判断
不成功的时候readyState只会从0输出到1 实际上请求通了的
然而然不会进入

问题三 当我在查看 xhr.onreadystatechange什么时候!=null的时候
我发现那个不为null的对象是来自于layui的 也就是layui为这个onreadystatechange实现了函数
接下来最严重的的如果onreadystatechange被我实现替换掉layui的 table将没有任何数据 观察了下源码
感觉确实被layui实现了 于是我卡住了 貌似就算用onreadystatechange实现了我想的效果 那layui的table就无法使用了

感觉忙了一个多小时到头来出发点就被pass了[泪] [泪] [泪]

所以有没有各路大佬做过这个类似的 还不和layui冲突的

实现的需求就是要监听页面内的任何请求后收到的响应 并判断响应头是否含有关键字
如果有则按自己的业务处理 已知后端写请求头这件事不太好改
so 跪求大佬帮助!!!


===========================================================================更新

找到了解决方式
与之前说的主要逻辑基本相似
偶然间找到的一个网页
https://www.jb51.net/article/91419.htm
心累 不过成功解决了 就连原版的判断也不需要了 先存下

写到js里哪个页面要直接调就行
回帖
  • 消灭零回复