ajax的异步与同步以及向上层函数返回值的应用

来源:互联网 发布:程控切纸机编程表 编辑:程序博客网 时间:2024/05/23 15:07
//由于ajax异步的运行方式,在函数中很难向上层函数返回值,但在做登陆页面submit时二次校验以及返回所有校验的判断又是需要的,因而采取输入时校验异步,提交时校验同步
将async以参数的形式传递入函数既不影响输入时的用户体验,还实现了提交时校验的功能
<script type="text/javascript">function changeImg(){document.getElementById("checkImg").setAttribute("src","${pageContext.request.contextPath }/checkCode?"+(new Date()));};function checkUsername(isAsync){var flag=false;$.ajax({type:"post",url:"${pageContext.request.contextPath }/ajaxCheckUsername",async:isAsync,data:{"username":$("#username").val()},dataType:"text",success: function(data){flag = !(data=="true");if(data=="true"){$("#failInfoDiv").html("用户名不存在");$("#failInfoDiv").css("color","red");}else{$("#failInfoDiv").html(">");$("#failInfoDiv").css("color","black");}}});return flag;};function checkUserCode(isAsync){var flag = false;$.ajax({type:"post",url:"${pageContext.request.contextPath }/ajaxCheckCode",async:isAsync,data:{"checkCode":$("#checkCode").val()},dataType:"json",success: function(data){flag = data;if(data){$("#failInfoDiv").html(">");$("#failInfoDiv").css("color","black");}else{$("#failInfoDiv").html("验证码不正确");$("#failInfoDiv").css("color","red");}}});return flag;};$(function(){//为用户名输入框绑定focusout事件校验用户名是否存在并激活$("#username").focusout(function() {checkUsername(true);});//为验证吗绑定时间校验验证码是否正确$("#checkCode").focusout(function() {checkUserCode(true);});$("#loginForm").submit(function(){var flag = true;if(!checkUsername(false)){alert("用户名不存在");flag=false;}if(!checkUserCode(false)){alert("验证码不正确");flag=false;}return flag;});});</script>