最近做ajax验证验证码代码如下
function checkSMSCode(){
。
。
。
var result = false;
$.ajax({
type: "get",
dataType:"json",
url: "<%=contextPath%>/checkSMSCode",
data:'mobileNum=' + mobileNum + "&SMSCode=" + smscode + "×tamp=" + new Date().getTime(),
success: function(ret){
if(ret[retVal]==retSuc){
result = true;
}else{
smsCodeObj.className = "errorKey";
$("#SMSCodeHelp").text(ret[retMsg]);
result = false;
}
},
error: function(){
$("#SMSCodeHelp").text('系统繁忙,请稍后再提交');
}
});
return result;
}
发现无论怎么验证,返回的总是false
检查后得知 jquery $.ajax()提交默认是异步的,就是执行到这之后,不等待执行完成,立刻执行下边的代码,所以就有了上面的情况
解决方法:
在方法里加上参数
async: false,//使用同步方式
这样就同步方式了。