Ajax異步方式實(shí)現(xiàn)登錄與驗(yàn)證
本文實(shí)例講述了Ajax異步方式實(shí)現(xiàn)登錄與驗(yàn)證的詳細(xì)代碼,分享給大家供大家參考。具體如下:
登錄代碼
這個(gè)是使用Bootstrap3的組件功能實(shí)現(xiàn)的
<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>
異步登錄請(qǐng)求的代碼
<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: '登錄成功!' }); /*這里使用的異步請(qǐng)求,當(dāng)請(qǐng)求登錄成功的時(shí)候,重新定位到index界面*/ window.location.href=contextPath+"/index.koala"; }else{ btnLogin.removeAttr('disabled').html('登錄'); $('.login_con_R').message({ type: 'error', content: data.errorMessage }); } } }); }; }); </script>
使用到的驗(yàn)證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:"手機(jī)格式不正確"}, TelePhone:{expression:/^(((0\d{2,3}-)?\d{7,8}(-\d{4})?))$/,errorMsg:"電話號(hào)碼格式不正確"}, IdCard:{expression:/^\d{15}(\d{2}[A-Za-z0-9])?$/,errorMsg:"身份證號(hào)碼格式不正確"}, Number:{expression:/^-?(\d+|[1-9]\d*\.\d+|0\.\d*[1-9]\d*|0?\.0+|0)$/,errorMsg:"僅支持?jǐn)?shù)字"}, 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 : ["以下原因?qū)е绿峤皇。篭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'); };
希望本文所述對(duì)大家學(xué)習(xí)有所幫助。
- 一款經(jīng)典的ajax登錄頁(yè)面 后臺(tái)asp.net
- ajax 實(shí)現(xiàn)微信網(wǎng)頁(yè)授權(quán)登錄的方法
- ajax實(shí)現(xiàn)登錄功能
- Ajax實(shí)現(xiàn)帶有驗(yàn)證碼的局部刷新登錄界面
- div彈出層的ajax登錄(Jquery版+c#)
- Ajax Session失效跳轉(zhuǎn)登錄頁(yè)面的方法
- ajax編寫簡(jiǎn)單的登錄頁(yè)面
- Ajax實(shí)現(xiàn)漂亮、安全的登錄界面
- 登錄超時(shí)給出提示跳到登錄頁(yè)面(ajax、導(dǎo)入、導(dǎo)出)
- Ajax實(shí)現(xiàn)登錄案例
相關(guān)文章
pjblog發(fā)表評(píng)論用的ajaxJS.js
pjblog發(fā)表評(píng)論用的ajaxJS.js...2007-04-04強(qiáng)烈推薦 - Ajax 技術(shù)資源中心
強(qiáng)烈推薦 - Ajax 技術(shù)資源中心...2007-05-05不使用XMLHttpRequest對(duì)象實(shí)現(xiàn)Ajax效果的方法小結(jié)
這篇文章主要介紹了不使用XMLHttpRequest對(duì)象實(shí)現(xiàn)Ajax效果的方法,結(jié)合具體實(shí)例形式分析了三種不使用XMLHttpRequest對(duì)象實(shí)現(xiàn)Ajax功能的相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2019-07-07jquery ajax多次請(qǐng)求數(shù)據(jù)時(shí) 不刷新問題的解決方法
下面小編就為大家?guī)?lái)一篇jquery ajax多次請(qǐng)求數(shù)據(jù)時(shí) 不刷新問題的解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10jquery中AJAX請(qǐng)求 $.post方法的使用
使用jQuery的$.post方法可以以POST形式向服務(wù)器發(fā)起AJAX請(qǐng)求.本篇文章主要給大家講解jquery中AJAX請(qǐng)求 $.post方法的使用,需要的朋友可以參考下2015-10-10天楓AJAX天氣預(yù)報(bào)系統(tǒng)V1.0
天楓AJAX天氣預(yù)報(bào)系統(tǒng)V1.0...2007-02-02基于Ajax的formData圖片和數(shù)據(jù)上傳
這篇文章主要為大家詳細(xì)介紹了基于Ajax的formData圖片和數(shù)據(jù)上傳相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05Ajax對(duì)xml信息的接收和處理操作實(shí)例分析
這篇文章主要介紹了Ajax對(duì)xml信息的接收和處理操作,結(jié)合實(shí)例形式分析了ajax針對(duì)xml結(jié)構(gòu)信息的相關(guān)處理操作技巧,需要的朋友可以參考下2019-07-07