response.sendRedirect页面跳转无效,原因是在于ajax请求后台

项目想要在后台进行页面跳转,用了response.sendRedirect,但是没反应,debug了一下,发现执行到重定向的时候没反应,当时就是一脸懵逼的,怎么重定向没有进行要页面跳转呢?到网上搜了下原因,

原因在于: 
(从网上摘录) 
Ajax只是利用脚本访问对应url获取数据而已,不能做除了获取返回数据以外的其它动作了。所以浏览器端是不会发起重定向的。 
1)正常的http url请求,只有浏览器和服务器两个参与者。浏览器端发起一个http请求,服务器端处理后发起一个重定向,浏览器端从response中获取到重定向地址,发起另一个http url请求。也就是说,浏览器会按照response中的内容进行响应(如重定向),这是浏览器的功能决定的就得响应。 
2)Ajax请求,参与者就有三个即ajax、客户端、服务器,ajax处于客户端和服务器两者之间。过程是客户端发起一个ajax请求,服务器端处理后,如果发起一个重定向,然后ajax会怎么办呢?它只会获取刚才请求返回的数据,其他的任何动作一概不去做,ajax是这么做的(ajax功能就是这么设定的,ajax框架源代码也是这么写的)。 
也就是说,引入了ajax之后,ajax就插在浏览器和服务器之间了,服务器给浏览器的response被ajax拦截了,但是ajax本身却什么都不做,也不转达。

 

上面说的很清楚了博主也就不扯犊子了,我就直接说我的解决方法吧,

既然在后台不能使用重定向进行页面跳转,那就直接把你要跳转的链接通过ajax回传到前台,然后直接通过前台进行页面跳转就行了,

response.sendRedirect页面跳转无效,原因是在于ajax请求后台_第1张图片

当然,这样的也有不好的地方,就是请求时间有点长。

这边我原本就是这样写的,为什么我当时想着要在后台进行重定向跳转页面呢?

是因为我在前台跳转链接的时候,请求了太多次后台接口,当时想着能不能再后台进行重定向跳转,能减少请求后台接口的次数,然后访问效率会快些,结果绕了一圈,还是又回来了,

欲哭无泪啊~~~

 

你可能感兴趣的:(java)