; (function ($) {
$(document).ready(function () {
$("form").submit(function () {
var flag = true;
//验证账号密码
//获取用户信息框
var $account = $("input[name=account]");
var $password = $("input[name=password]");
var userData = {
account: $account[0].value,
password: $password[0].value
};
//清空验证信息
if (userData.account == "") {
flag = false;
swal({
title: "提示",
text: "请输入账号"
});
}
if (userData.password == "") {
flag = false;
swal({
title: "提示",
text: "密码不能为空"
});
}
if (userData.password != "" && userData.account != "") {
$.ajax({
type: "POST",
url: "/api/User/Login",
data: { "account": userData.account, "psd": userData.password },
dataType: "json",
error: function (data) {
flag = false;
alert("登录错误,请于管理员联系");
},
success: function (data) {
if (data.code == 4) {
flag = false;
alert(data.errorMsg);
}
if (data.code == 2) {
flag = false;
alert(data.errorMsg);
}
}
});
}
aler(flag); //这里不管ajax里面怎么判断,这里都是true
return flag;
});
});
})(jQuery);
加上这个 async: false 在试试
那你把 一开始的定义置为false . var flag = false; 最后还是false?
最好用chrome调试一下js,看每个分支执行的情况就知道了。
ajax是异步的 所以在你打印flag的时候ajax还没有执行
我的问题和你的一样,我刚刚解决
1:首先在你的ajax里面加上async: false,设置成同步请求
2:在你的这个方法里面再设一个 var flag = true,
if (userData.password != "" && userData.account != "")
var flag =true;
3:最后在这个If方法最后 return flag,flag的值就改变了