结论:在同一个方法里,$ajax()是最后执行的。
方法:要使它按顺序执行只需在$ajax加async:false,接触异步交互。
下面是我的ajax登录测试的代码:
当msg为空时代表账号密码验证正确,不为空时账号或者密码错误
function login(){
var boo=false;
var account=$("#loginaccount");
var password=$("#loginpassword");
$.ajax( {
url : 'http://localhost:8899/bookmanage/Login?account='+account.val()+'&password='+password.val(),
type : 'get',
contentType : "application/json;charset=utf-8",
success : function(msg) {
if(msg!=""){
alert(msg);
console.info(3+" "+boo);
boo=false
console.info(4+" "+boo);
}else{
console.info(5+" "+boo);
boo=true;
console.info(6+" "+boo);
}
} });
console.info(1+" "+boo);
if(account.val()==""){
alert("账号不能为空!");
return false;
}else if(password.val()==""){
alert("密码不能为空!");
return false;
}else{
console.info(7+" "+boo);
return boo;
}
}
msg为空(验证通过)时控制台输出5 flase,6 flase,3 flase,4 true
msg不为空时5 flase,6 flase,1 flase,2 flase
得出的结果:ajax是最后执行的
加了async:false,的ajax部分代码:
$.ajax( {
url : 'http://localhost:8899/bookmanage/Login?account='+account.val()+'&password='+password.val(),
type : 'get',
async:false,
contentType : "application/json;charset=utf-8",
success : function(msg) {
msg不为空时1 flase,2 flase,5 flase,6 flase
msg为空时跳转
msg不为空时1 flase,7 flase,3 flase,4 flase