问题3:ajax请求遇到302无法重定向

先描述一下场景: 在使用easyui的tab选项卡, 点击左边的菜单,右边会加载新的选项卡出来,点击左边的菜单是用ajax做的,携带jsp的名字请求后台返回页面数据,  但是整个框架是整合了shiro的,当你清除cookie的sessionid或者等等情况使session失效后,shiro会重定向到登录页面,但是ajax是无法处理302重定向的.

(大致原因解释一下:只是我自己的理解,可能有错误. 

    1:发起ajax请求

    2.后台返回302代码

    3.ajax回调函数暂停,

    4.处理重定向连接,后台返回200代码

    5.回调函数启动,接收200代码

    因此如果你在回调函数中通过判断302使用window函数重定向是无法实现的,ajax回调函数接收的始终是200-300之间的代码

)

,所以整体的逻辑是:

    1.点击菜单发起ajax请求,请求页面数据,

    2.后台判断当前用户是否在登录状态

    3.如果在登录状态,返回页面数据

    4.如果不在登录状态返回json数据,包括状态,重定向链接,失败信息等等

    5.前台接收数据,如果是页面数据,正常加载,如果是失败是数据,弹出提示信息,跳转登录页面


一直无法解决的问题:

    easyui的tab添加面板时是使用add方法进行处理.href进行页面数据加载,

    本人不是做前台的.easyui的框架js代码看不是太懂,最后还是翻了翻手册,发现tab继承自panle

然后发现panle有一个onLoadError函数,


所以我在后台shiro认证到没有登录返回json数据时,将respons的状态改成302,然后add方法就会跳进onLoadError函数中,

在函数中进行json字符串解析和跳转就好了.

网上有好多解答方法,大致思路都是这样,通过json数据判断,或者在响应头中添加自定义数据进行页面跳转,

但是我由于使用easyui, 一反面函数无法自定义,另一方面后台返回的数据比较复杂,所以一直比较纠结如何解析返回的数据,判断返回的是页面还是失败的json信息.

现在通过onLoadError函数就可以解决了

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值