在spring security 中 Ajax提交时,session超时,局部加载登陆页面,为解决这个问题,重写ajax提交,返回的是modeview或者没有制定datatype时;

如果检测到加载到了login页面,则直接整体跳转到登陆页面,

具体代码如下:

(function($){
// 保存原有的jquery ajax;
var $_ajax = $.ajax;
$.ajax = function(options){
var originalSuccess,
mySuccess,
success_context;
if (options.success && options.dataType!="json") { //如果返回的是json或者map则,下文中的data.indexof函数出错;
// save reference to original success callback
originalSuccess = options.success;
success_context = options.context ? options.context : $;
// 自定义callback
mySuccess = function(data) {
 if(xhr.responseText.indexOf("<body name=\"loginPage\"") >= 0){
                         //如果担心登陆后,跳转到原来的ajax请求页面,原来的父页面没有了,可以在这里设置跳转到一个action,登陆成功后,跳到这个action
                          window.location.href =window.location.href;//baseURL+"/home/index";
                          return;
                        }else{
                         // call original success callback
                         originalSuccess.apply(success_context, arguments);  
                        }   
};
// override success callback with custom implementation
options.success = mySuccess;
}
// call original ajax function with modified arguments
$_ajax.apply($, arguments);
}; })(jQuery);

如果AJAx返回的是json,则Ajax返回数据之前就跳转到了login.jsp页面;返回的是一个jsp页面,转json格式时,直接抛Ajax转换报错解决方法如下:

$(document).ready(function(){
$.ajaxSetup({
error:function(xhr, textStatus, errorThrown){
if((xhr.status == 0 && this.url)||(textStatus=="parsererror")){//返回的是login.jsp页面,所以json解析报错
common.showTip({title: localeMsg.common.error, text: '会话超时请重新登录'});
//如果担心登陆后,跳转到原来的ajax请求页面,原来的父页面没有了,可以在这里设置跳转到一个action,登陆成功后,跳到这个action
window.location.href =baseURL+"/login.jsp";
return;
//common.genSsoIframe(this.url, function(){
//});
}else{
common.showTip({title: localeMsg.common.error, text: xhr.status});
}
}
});
});

如果AJax提交的是json,则可以在拦截器中,判断session实效时,再在ajax中拦截,具体的方法如下:

spring security 3 的Ajax  (解决 Ajax登陆页面跳转)  http://jackyrong.iteye.com/blog/1770629

Ajax 提交session实效跳转到完整的登陆页面的更多相关文章

  1. ajax提交session超时跳转页面使用全局的方法来处理

    来自:http://www.jb51.net/article/43770.htm 如果是ajax提交,超时时从服务器发出的跳转命令就不会起作用,所以如果是session超时,而且是在ajax请求,就在 ...

  2. 处理jquery的ajax请求session过期跳转到登录页面

    首先需要在拦截器中判断是否是ajax请求,如果是 if(isAjaxRequest(request)){//ajax请求 response.setHeader("sessionstatus& ...

  3. ajax 提交成功页面跳转问题

    jsx/ajax提交成功后采用以下方式跳转:1.本页面跳转:"window.location.href"."location.href" 2.上一层页面跳转:& ...

  4. aJax提交——服务端不能用request存储数据,session存数据客户端可以接收到

    aJax提交与普通提交是两种迥异的提交方式,这两种提交方式决定了客户端与服务端交互时存储.传输数据的方式也不同. aJax提交,客户端的请求数据存储在data中,服务端用request.getPara ...

  5. 表单提交是ajax提交,PC提交没问题但是手机提交就会一直跳到error,并且也没状态码一直是0

    真是被自己蠢死了button标签他会自动提交刷新页面 <form id="baoming_from"> <p>请填写您的个人信息</p> < ...

  6. jquery的ajax提交后,会跳转页面

    今天在写代码的时候,遇到一个很奇怪的问题,一个form表单,用的是ajax的方式提交.结果,在服务器端php中,使用exit(),函数后都不能停止,并且继续跳转到本页.请求如下: 第一个请求中,其实我 ...

  7. ajax提交完表单数据依然跳转的解决办法

    1. 既然ajax提交数据,就把表单里面submit按钮换掉,因为触发submit他就会跳转页面 提交的时候他会先触发ajax 再触发submit的提交 2.如果确定了表单没有submit,那么把提交 ...

  8. laravel ajax提交登陆存储session,并输出

    前端输出session {{ Session::get('username') }} ajax提交 <div>{{ Session::get('username') }}</div& ...

  9. ajax提交表单,包括跳入的坑!

    本来今天上午写了一个js执行上下文的一个了解.但是写一大半的时候出去有事,电脑关了啥都没了. 还是让我们进入正题 ajax提交表单,很简单,原生js的代码太复杂,我们就jq的去写. 创建html文件, ...

随机推荐

  1. jquery.hover()函数使用

    <script> $(document).ready(function (t) { $(".wadver li").hover(function(event) { $( ...

  2. 用Python3实现表达式求值

    一.题目描述 请用 python3 编写一个计算器的控制台程序,支持加减乘除.乘方.括号.小数点,运算符优先级为括号>乘方>乘除>加减,同级别运算按照从左向右的顺序计算. 二.输入描 ...

  3. ZOJ 3911 线段树

    题意:有N个数字,M个操作,然后回答每个Q开头的询问 操作形式: A val pos:在pos位置上+val Q l r:询问l~r之间有多少个质数 R val l r:把l~r之间的数字替换成val ...

  4. JavaScript笔记及总结

    前言: 网页中HTML为内容,CSS做展现(修饰内容),Js为行为(交互). Js属于基于对象型的脚本语言,在学习时当作编程语言(如java,c#)学习更好理解. javascript是实现网页动态效 ...

  5. C# 字符编码类Encoding

    在网络通信中,很多情况下都是将字符信息转成字节序列进行传输.将字符序列转为字节序列的过程称为编码.当这些字节传送到接收方,接收方需要逆向将字节序列转为字符序列.这个过程就是解码. 常见编码有ASCII ...

  6. Nginx反向代理配置可跨域

    由于业务需要,同一项目中的前端代码放在静态环境中,而后端代码放在tomcat中,但此时问题却出现了:前端使用ajax请求后端获取数据时出现如下报错 XMLHttpRequest cannot load ...

  7. Git 的详细使用

      本文翻译自Understanding Git Source Control in Xcode (译者myShire)欢迎您加入我们的翻译小组. 在应用程序开发过程中,很重要的一部分工作就是如何进行 ...

  8. git入门及上传项目到github

    Git入门:       如果你完全没有接触过Git,你现在只需要理解通过Git的语法(敲入一些命令)就可以将代码上传到远程的仓库或者下载到本地的仓库(服务器),我们此时应该有两个仓库,就是两个放代码 ...

  9. Jquery 点击图片在弹出层显示大图

    http://blog.csdn.net/wongwaidah/article/details/28432427(案例链接出处,本人只是转载收藏) <html> <head> ...

  10. React(JSX语法)----JSX拼写

    注意:For DOM differences,such as the inline style attribute,check here. // bad: it displays "FIrs ...