封装ajax方法(统一处理登录超时异常)
来源:互联网 发布:人工智能的利弊英语版 编辑:程序博客网 时间:2024/05/29 14:44
在项目中使用普遍使用了ajax作为请求,如果当登录超时时,需要弹出登录窗口或者跑转到登录页面 重新验证,如果每个方法都判断一遍是个很头疼的事情,为此对ajax 进行了封装。使用方法跟原生ajax一样。
common.js
(function ($) { //初始化绑定默认的属性 $.ajaxDefaults = $.ajaxDefaults || {}; $.ajaxDefaults.property = { async:true, type:"POST", contentType:"application/x-www-form-urlencoded", cache:false, data:{}, dataType:"json", timeout:6000, success:function (result, textStatus, request){ }, error:function(result, textStatus, request){ console.log(result); } }; //初始化上传控件 $.ajaxRequest = function (b) { var p = $.extend({}, $.ajaxDefaults.property, b || {}); if(typeof(p.url) == "undefined" || p.url == ""){ $.messager.alert('系统提示', "缺少URL参数"); return ; } $.ajax({ async:p.async, type: p.type, contentType: p.contentType, url: p.url, dataType: p.dataType, data: p.data, success: function (result, textStatus, request){ if(request.getResponseHeader('ResponseStatus') == "timeout"){//登录超时 if(window != top){ parent.openLoginDlg(); }else{ openLoginDlg(); } return ; } p.success(result, textStatus, request); },error:function(data){ p.error(data); } }); }; })(jQuery);
后端登录拦载器处理:
public class AuthFilter extends AuthorizationFilter { protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws IOException { HttpServletRequest httpRequest = (HttpServletRequest) request; HttpServletResponse httpResponse = (HttpServletResponse) response; Subject subject = getSubject(request, response); if (subject.getPrincipal() == null) { if (isAjax(httpRequest)) { httpResponse.setHeader("ResponseStatus", "timeout");// WebUtils.sendJson(httpResponse, JsonUtils.toJSONString(new ViewResult(false, // "您尚未登录或登录时间过长,请重新登录!"))); } else { saveRequestAndRedirectToLogin(request, response); return false; } } return true; }
private boolean isAjax(HttpServletRequest httpRequest){ String xmlHttpRequest = httpRequest.getHeader("X-Requested-With"); if (xmlHttpRequest != null && xmlHttpRequest.equalsIgnoreCase("XMLHttpRequest")) { return true; } return false; }
使用示例:
$.ajaxRequest({ url: postURL, data: $("#UserForm").serializeArray(), success: function (result) { if (result.code == 0) { $.messager.alert('系统提示', '保存成功', 'info', function () { window.location.href ="${basePath}/user/userList.html"; }); }else{ $.messager.alert(result.msg); $("#submitBtn").attr("onclick","saveUser()"); } },error:function(data){ $("#submitBtn").attr("onclick","saveUser()"); $.messager.alert('系统提示', "操作失败,请稍后再试!"); } });
阅读全文
0 0
- 封装ajax方法(统一处理登录超时异常)
- springmvc统一处理ajax异常
- 在Ajax请求中处理登录session超时的方法
- 单点登录,session超时, ajax链接处理
- 扩展jQuery的方法统一处理AJAX调用过程中产生的异常错误信息
- Spring MVC的异常统一处理方法
- java 接口方法超时异常处理 设置超时时间
- Shiro 处理ajax请求 拦截登录超时 解决!
- Shiro 处理ajax请求 拦截登录超时---解决!
- 统一的处理异常
- 统一异常处理
- strut2 统一异常处理
- Spring统一异常处理
- 异常的统一处理
- sprimgmvc统一处理异常
- springmvc统一异常处理
- Spring > 统一异常处理
- MVC统一异常处理
- TensorFlow学习笔记(八)add_layer操作
- C杂记
- 李宏毅机器学习课程9~~~深度学习技巧(待整理)
- java8中ForEach Method
- struts2 标签库
- 封装ajax方法(统一处理登录超时异常)
- js截取字符串的常用方法
- 【深度学习】深度学习中常用的激活函数
- python学习(五)----Python标准异常总结
- 用Eclipse建spring mvc项目(图解)
- 【ARM】基本汇编指令——Keil
- Android studio中导入第三方jar、aar及JNI库
- BZOJ3679 数字之积
- spring mvc项目中配置跨域访问过滤器