一、ajax重定向的问题。

默认ajax是不支持重定向的,因为ajax本身就是局部刷新,不重新加载页面的。如果需要用到重定向可以通过以下方法:

第一步:后端代码改造。

在后端(大部分情况都是拦截器)中判断是否需要重定向。

Eg:session过期判断,当判断session已经过期了,就先判断此次请求是否是ajax的请求。

方法:

@Override

public boolean preHandle(HttpServletRequest request,

HttpServletResponse response, Object arg2) throws Exception {

User u = (User) request.getSession().getAttribute("USER");

String type = request.getHeader("X-Requested-With");// XMLHttpRequest

if (u == null) {

// 重定向

String path = request.getContextPath();

String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";

//response.sendRedirect(contextPath+"/index.jsp");

// System.err.println("sendRedirect");

// 转发

if (StringUtils.equals("XMLHttpRequest", type)) {

// ajax请求

response.setHeader("SESSIONSTATUS", "TIMEOUT");

response.setHeader("CONTEXTPATH", basePath+"index.jsp");

response.setStatus(HttpServletResponse.SC_FORBIDDEN);

return false;

} else {

response.sendRedirect(basePath+"index.jsp");

return false;

}

}

return true;

}

第二步:前段改造ajax属性。

通过$.ajaxSetup()方法给ajax方法统一添加请求执行结束后,执行的操作。

$.ajaxSetup( {

//设置ajax请求结束后的执行动作

complete :

function(XMLHttpRequest, textStatus) {

// 通过XMLHttpRequest取得响应头,sessionstatus

var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus");

if (sessionstatus == "TIMEOUT") {

var win = window;

while (win != win.top){

win = win.top;

}

win.location.href= XMLHttpRequest.getResponseHeader("CONTEXTPATH");

}

}

});

java ajax无权限跳转_ajax请求重定向后页面不跳转问题 (使用拦截器)相关推荐

  1. java ajax无权限跳转_如何在ajax权限判断后跳转?

    经常会遇到一种场景,直接访问某些权限被拒绝后跳转登陆页面,然而ajax不会跳转 这个时候使用全局的: $(function(){ //全局的ajax访问,处理ajax清求时sesion超时 $.aja ...

  2. Ajax请求成功后页面跳转

    文章目录 Ajax实现页面局部刷新 Ajax请求成功后页面跳转 Ajax实现页面局部刷新 这里通过点击一个按钮,然后下面产生一段文字,而整个页面不用刷新 <!DOCTYPE html> & ...

  3. 【Java EE (Struts2 + Spring + Hibernate)开发】:Struts2(二)之【拦截器机制】

    [Java EE (Struts2 + Spring + Hibernate)开发]:Struts2(二)之[拦截器机制] 本文地址:http://blog.csdn.net/shanglianlm/ ...

  4. java ajax无刷分页_简单实现Ajax无刷新分页效果

    Ajax无刷新分页效果,如下代码实现 Ajax无刷新分页效果 function showpage(url) { var xhr = new XMLHttpRequest(); xhr.onreadys ...

  5. 请求转发、请求重定向与页面跳转问题

    请求转发 请求转发是服务器行为,即用户向服务器发送了一次http请求,该请求可能会经过多个信息资源处理以后返回给用户,各个信息资源使用请求转发机制互相转发请求,从用户的感官上来看,是感觉不到请求转发的 ...

  6. ajax请求成功后打开新开窗口(window.open())被拦截的解决方法

    问题:今天在做项目时需要在ajax请求成功后打开一个新的窗口,此时遇到浏览拦截了新窗口的问题,尝试在ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('clic ...

  7. java中注解动态传参_SpringMVC之注解、传参、返回值及拦截器

    1. 注解式开发之annotation-driven解释 (1) mvc注解驱动在哪个文件中配置? Springmvc.xml (2) 配置mvc注解驱动使用哪个标签? 2. 注解式开发之视图解析器 ...

  8. html 自动跳转手机版,HTML实现页面自动跳转的五种方法

    在上篇文章给大家介绍了HTML页面3秒后自动跳转的三种常见方法,本文继续给大家介绍有关html页面跳转相关知识,一起学习吧. 下面列了五个例子来详细说明,这几个例子的主要功能是:在5秒后,自动跳转到同 ...

  9. ajax 执行成功 modal 关闭_Ajax请求中的async:false/true的作用

    前言: 昨天在做倒计时修改的时候,发现多次点击按钮,我明明做了限制,点击多次的时候发现怎么都会请求了两次,然后我写的是请求成功添加文字,结果总是会添加两次文字, 说明ajax请求了两次了,在网上查了下 ...

最新文章

  1. 结巴分词jieba添加自定义词典
  2. docker修改镜像的存储位置_Docker存储原理
  3. spring boot使用外置tomcat部署需要排除的依赖
  4. 程序员怎么样保证自己的程序没有BUG
  5. Nancy简单实战之NancyMusicStore(四):实现购物车
  6. 第五十九期:如何在Windows 10中执行Windows Defender离线扫描?
  7. 【OpenGL4.0】GLSL渲染语言入门与VBO、VAO使用:绘制一个三角形
  8. 基于CompletableFuture并发任务编排实现
  9. USACO-Section2.2 Subset Sums
  10. XFire WebService开发快速起步
  11. java第三次实验作业
  12. Django 模板中使用 Ajax POST
  13. 我用 Python 集齐了支付宝五福!
  14. linux libpng dev,linux下实用图形库--libpng下载地址及说明
  15. No MyBatis mapper was found in ‘[xx.mapper]‘ package. Please check your configuration.特殊处理
  16. 入秋的第一篇数据结构算法:看看归并与快排的风采,三面蚂蚁金服成功拿到offer
  17. API的小结===一定要看
  18. JavaScript格式化字符串为指定长度
  19. win10自带sftp服务器_如何使用OpenSSH在Win10中设置SFTP服务器
  20. CISCO CDP邻居发现协议

热门文章

  1. arr访问绝对地址_西门子1200PLC与汇川伺服电机的MODBUS-RTU通讯
  2. C语言————求一个正整数的各个位数之和
  3. 【惯性导航姿态仪】02 磁传感器的简易标定说明
  4. C++ STL编程轻松入门基础
  5. 跨平台的网络云盘软件设计实现【二】
  6. 蓝牙广播数据包_蓝牙BLE数据包格式汇总
  7. php小红书,【小红书逻辑PHP面试题】面试问题:PHP小红书文… - 看准网
  8. 百度地图改变/替换marker图标
  9. FreeMarker制作模板并使用
  10. 【PCB布线】不同电流所需PCB线宽