Ajax异步方式实现登录与參数的校验

登录代码

这个是使用Bootstrap3的组件功能实现的

<div class="login_con_R"><h4>登录</h4><FORM id="loginFormId" class="form-horizontal" action="login" method="post"><div class="form-group input-group"><span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span><input type="text" class="form-control" placeholder="用户名"  name="username" id="j_username" value="koala"></div><div class="form-group input-group"><span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span><input type="password" name="password" id="j_password" class="form-control" placeholder="密码" value="888888"/></div>              <div class="form-group input-group" style="margin-top: 45px;"><button type="button"  class="btn btn-primary btn-block" id="loginBtn">登录</button></div></FORM></div>

异步登录请求的代码

<script>$(function(){var btnLogin = $('#loginBtn');var form = $('#loginFormId');$('body').keydown(function(e) {if (e.keyCode == 13) {dologin();}});btnLogin.on('click',function() {dologin();});var dologin = function() {var userNameElement = $("#j_username");var passwordElement = $("#j_password");var username = userNameElement.val();var password = passwordElement.val();if (!Validation.notNull($('body'), userNameElement, username, '用户名不能为空')) {return false;}if (!Validation.notNull($('body'), passwordElement, password, '密码不能为空')) {return false;}btnLogin.attr('disabled', 'disabled').html('正在登录...');var param = form.serialize();$.ajax({url: contextPath+"/login.koala",dataType: "json",data: param,type: "POST",success: function(data){if(data.success){$('.login_con_R').message({type: 'success',content:  '登录成功!

'

}); /*这里使用的异步请求,当请求登录成功的时候。又一次定位到index界面*/ window.location.href=contextPath+"/index.koala"; }else{ btnLogin.removeAttr('disabled').html('登录'); $('.login_con_R').message({ type: 'error', content: data.errorMessage }); } } }); }; }); </script>

使用到的验证js代码Validation.js

Validator = {Require : {expression:/.+/,errorMsg:"该字段不能为空"},Email : {expression:/^\w+([-+.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$/,errorMsg:"Email格式不对"},Mobile:{expression:/^(1[3|5|8]{1}\d{9})$/,errorMsg:"手机格式不对"},TelePhone:{expression:/^(((0\d{2,3}-)?\d{7,8}(-\d{4})?))$/,errorMsg:"电话号码格式不对"},IdCard:{expression:/^\d{15}(\d{2}[A-Za-z0-9])?

$/

,errorMsg:"身份证号码格式不对"}, Number:{expression:/^-?(\d+|[1-9]\d*\.\d+|0\.\d*[1-9]\d*|0?\.0+|0)$/,errorMsg:"仅支持数字"}, English:{expression:/^[A-Za-z]+$/,errorMsg:"仅支持英文字符"}, Chinese:{expression:/^[\u0391-\uFFE5]+$/,errorMsg:"仅支持中文字符"}, URL:{expression:/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,errorMsg:"URL地址格式不对"}, Regex:{errorMsg:"格式不对"}, UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?

\\\/\'\"]*)|.{0,5})$|\s/

, IsSafe : function(str){return !this.UnSafe.test(str);}, SafeString : {expression:"this.IsSafe(value)",errorMsg:"仅支持中文字符"}, ErrorItem : [document.forms[0]], ErrorMessage : ["下面原因导致提交失败:\t\t\t\t"], Validate : function(theForm, mode){ var obj = theForm || event.srcElement; var count = obj.elements.length; this.ErrorMessage.length = 1; this.ErrorItem.length = 1; this.ErrorItem[0] = obj; for(var i=0;i<count;i++){ with(obj.elements[i]){ if(disabled)continue; var _dataType = getAttribute("dataType"); if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined") continue; this.ClearState(obj.elements[i]); if(getAttribute("require") == "false" && value == "") continue; var errorMsg = getAttribute("errorMsg")? getAttribute("errorMsg") : this[_dataType].errorMsg; errorMsg = errorMsg || "invalid"; var validateExpr = getAttribute("validateExpr"); validateExpr = validateExpr || this[_dataType].expression; switch(_dataType){ case "Date" : case "Repeat" : case "Range" : case "Compare" : case "Custom" : case "Group" : case "Limit" : case "LimitB" : case "SafeString" : if(!eval(validateExpr)) { this.AddError(i, errorMsg); } break; default : if(!eval(validateExpr).test(value)){ this.AddError(i, errorMsg); } break; } } } if(this.ErrorMessage.length > 1){ var content = this.ErrorMessage[1].replace(/\d+:/," "); var $element = $(this.ErrorItem[1]); var name = $element.attr('name'); if(name.indexOf('DTO') != -1){ name = name.split('.')[1]; } var $targetElement = $element; var $tempElement = $targetElement.closest('form').find('#' + name + 'ID'); if($tempElement.hasClass('select')){ $targetElement = $tempElement; } showErrorMessage($element.closest('.modal'), $targetElement, content); return false; } return true; }, limit : function(len,min, max){ min = min || 0; max = max || Number.MAX_VALUE; return min <= len && len <= max; }, LenB : function(str){ return str.replace(/[^\x00-\xff]/g,"**").length; }, ClearState : function(elem){ with(elem){ if(style.color == "red") style.color = ""; var ligertipid = getAttribute("ligertipid"); if(ligertipid && ligertipid != ""){ removeAttribute("ligertipid"); $(elem).ligerHideTip(); } } }, AddError : function(index, str){ this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].elements[index]; this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + ":" + str; }, Exec : function(op, reg){ return new RegExp(reg,"g").test(op); }, compare : function(op1,operator,op2){ switch (operator) { case "NotEqual": return (op1 != op2); case "GreaterThan": return (op1 > op2); case "GreaterThanEqual": return (op1 >= op2); case "LessThan": return (op1 < op2); case "LessThanEqual": return (op1 <= op2); default: return (op1 == op2); } }, MustChecked : function(name, min, max){ var groups = document.getElementsByName(name); var hasChecked = 0; min = min || 1; max = max || groups.length; for(var i=groups.length-1;i>=0;i--) if(groups[i].checked) hasChecked++; return min <= hasChecked && hasChecked <= max; }, IsDate : function(op, formatString){ formatString = formatString || "ymd"; var m, year, month, day; switch(formatString){ case "ymd" : m = op.match(new RegExp("^\\s*((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})\\s*$")); if(m == null ) return false; day = m[6]; month = m[5]--; year = (m[2].length == 4) ?

m[2] : GetFullYear(parseInt(m[3], 10)); break; case "dmy" : m = op.match(new RegExp("^\\s*(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))\\s*$")); if(m == null ) return false; day = m[1]; month = m[3]--; year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10)); break; default : break; } var date = new Date(year, month, day); return (typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate()); function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;} } }; var Validation = { notNull: function($container, $element, content, errorMessage) { if (isNull(content)) { showErrorMessage($container, $element, errorMessage); return false; } return true; }, email: function($container, $element, content, errorMessage) { var reg = new RegExp(/^(\w)+(\.\w+)*@(\w)+((\.\w{2,3}){1,3})$/); if (!reg.test(content)) { showErrorMessage($container, $element, errorMessage); return false; } return true; }, serialNmuber: function($container, $element, content, errorMessage) { var reg = new RegExp(/^[0-9a-zA-Z_-]*$/); if (!reg.test(content)) { showErrorMessage($container, $element, errorMessage); return false; } return true; }, number: function($container, $element, content, errorMessage) { var reg = new RegExp(/^[0-9]*$/); if (!reg.test(content)) { showErrorMessage($container, $element, errorMessage); return false; } return true; }, humanName: function($container, $element, content, errorMessage) { var reg = new RegExp(/(^[A-Z a-z]*$)|(^[\u4e00-\u9fa5]*$)/); if (!reg.test(content)) { showErrorMessage($container, $element, errorMessage); return false; } return true; }, checkByRegExp: function($container, $element, regExp, content, errorMessage){ var reg = new RegExp(regExp); if (!reg.test(content)) { showErrorMessage($container, $element, errorMessage); return false; } return true; } }; /** * 检查是否为空 */ var isNull = function(item){ if(item == null || item == "" || item.replace(/(^\s*)|(\s*$)/g, "") == "" ){ return true; } return false; }; /** * 显示提示信息 */ var showErrorMessage = function($container, $element, content){ $element.popover({ content: content, trigger: 'manual', container: $container }).popover('show').on({ 'blur': function(){ $element.popover('destroy'); $element.parent().removeClass('has-error'); }, 'keydown': function(){ $element.popover('destroy'); $element.parent().removeClass('has-error'); } }).focus().parent().addClass('has-error'); };

posted on 2017-07-08 08:20 mthoutai 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/mthoutai/p/7135736.html

Ajax异步方式实现登录与參数的校验相关推荐

  1. 获取Oracle隐含參数信息

    Oracle数据库的初始化參数.主要来源于两个Oracle内部数据字典表:X$KSPPCV和X$KSPPI通常我们查询的V$Parameter视图或使用show parameter命令都是就来源于这两 ...

  2. AJAX异步请求(Asynchronous Javascript And Xml)

    文章目录 1.传统请求及缺点 (1)传统的请求 (2)传统请求存在的问题 2.AJAX概述 3.XMLHttpRequest对象 4.AJAX GET请求 5.AJAX GET请求缓存问题 6.AJA ...

  3. 用ajax实现登陆验证,ajax异步登录验证实现

    如何用ajax异步登录验证实现? ajax异步无刷新登陆实现分为四步: class="fe_text jsv_required js_has_dval" title=请输入用户名 ...

  4. jquery ajax參数加点号状态200进error

    今天开发中遇到一个非常恶心的问题: 用jquery中的ajax提交.发现假设參数中有点号的參数.后台正常返回200状态码的情况下也会走到error:function. 1. 參数data: " ...

  5. ajax get 缓存 ie,Ajax异步同步请求被IE缓存的问题解决方法(get方式)

    Ajax异步同步请求被IE缓存的问题解决方法(get方式) 分类:Javascript| 发布:佚名| 查看: | 发表时间:2014/1/20 折腾了半天,程序中使用jquery的load方法进行请 ...

  6. JSP同步请求和html+ajax异步请求的两种方式

    war包:包括所有的项目资源,只要从浏览器发起的都是属于请求,然后把资源响应给浏览器,解析显示出来. 方式一:HTML+ajax(跳转静态html也是属于请求响应,把整个页面响应给浏览器.) html ...

  7. jQuery实现Ajax异步请求的三种方式

    jQuery实现Ajax jQuery框架对js原生的ajax进行了封装,封装后的ajax相比原生就变的更加简洁方便,而且功能更加丰富 常用的三种ajax实现的方法: get:$.get(url,[d ...

  8. java jsp 页面下拉框 ajax异步加载数库数据

    全面详细的新手下拉框数据显示.web项目中难免用到下拉框异步加载数据的情况.这里分享一个.使用的是jquery的ajax异步加载后台数据.后台使用java语言. 1,先看效果,下拉框如下: 2.获取值 ...

  9. 创建线程的几种方式?JSP的九大内置对象及作用分别是什么?servlet的生命周期及常用方法?转发和重定向区别?ajax书写方式及内部主要参数都有哪些

    文章目录 1 , 创建线程的几种方式? 问题扩展: 2 ,JSP的九大内置对象及作用分别是什么? (1) 问题分析: (2) 核心答案讲解: 1.request对象 2.response对象 3.se ...

最新文章

  1. 关系管理系统:js代码生成select的出生日期
  2. 观察性研究的网络Meta分析
  3. 王之泰201771010131《面向对象程序设计(java)》第九周学习总结
  4. 需求分析阶段各种图的功能
  5. 【Go 框架开发】Zinx 框架开发笔记
  6. 可重入性和线程安全性
  7. 会c语言如何快速入门python,初学者如何从C语言到Python的转化(北大陈斌老师的举例 )...
  8. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第4节 模拟BS服务器案例_2_模拟BS服务器代码实现...
  9. 电信私有云 oracle,行业观察:Oracle私有云升级
  10. CAD迷你看图软件中怎么进行实时缩放建筑图纸的大小?
  11. php setlocale 中国,PHP setlocale,UTF-8与否?
  12. 用计算机和电视机组成家庭影院,如何让我的电脑连上我的家庭影院?
  13. watch监听的几个方法
  14. 【《RISC-V “V“ Vector Extension Version 1.0》阅读笔记】
  15. ASP+Access的安全隐患及对策(转)
  16. ​[c/c++后台开发面经系列]4 Zoom面经(含答案)
  17. 操作系统实验之处理机调度
  18. Google Earth Engine(GEE)——基本介绍和图像分析、可视化和处理实战
  19. 【软件安全实验2022】验证码——1
  20. 航空科普VR大型体验馆设备VR航天主题乐园星际飞碟vr游乐设备

热门文章

  1. 除非 Windows Activation Service (WAS)和万维网发布服务(W3SVC)均处于运行状态,否则无法启动网站。IIS 7...
  2. 启动瑞星杀毒时提示"应用程序正常初始化(0xc00000ba)失败
  3. 为了给女朋友独特的七夕惊喜,我学会了人像美肤算法!
  4. CVPR 2020丨基于范例的精细可控图像翻译CoCosNet,一键生成你心目中的图像
  5. 第四届 AI City 挑战赛 @ CVPR 2020 开始啦!
  6. CV Code | 本周新出计算机视觉开源代码汇总(含实例分割、行人检测、姿态估计、神经架构搜索、超分辨率等)...
  7. 「实践出真知」如何打造一流的视觉AI技术
  8. mysql查一个表3到5行的数据类型_MySQL入门(三) 数据库表的查询操作【重要】
  9. Hinton发布最新论文!表达神经网络中部分-整体层次结构
  10. 译文 | 与TensorFlow的第一次接触 第五章:多层神经网络