诸所周知的,Ajax返回值是在匿名函数里处理的,且因jQuery 中$.post,$.get默认是异步处理,因此导致无法获取返回值问题,接收到的返回值往往是undefined,一般比较有效的处理方法是设置全局变量接收返回值。
时间关系,草草一例,以示用法:
function checkPwd(username, pwd) {
if (!pwd) {
alert("密码不能为空");
return false;
}
var result; // 定义变量接收返回值
$.ajax({
url: "/home/login/checkPwd",
async: false,//改为同步方式
type: "POST",
cache: false,
data: {username: username, passwd: pwd},
dataType: "json",
success: function (data) {
result = data; // 接收返回值
}
});
if (result.status == 'error') {
alert(result.msg);
return false; // 返回给调用函数
}
}
/**
* 验证表单
* @param form
* @returns {boolean}
*/
function login(form) {
with (form) {
// 上面代码在ajax之外设返回值false,这里才可以拿到,否则是undefined
if ( checkPwd(user.value, pwd.value)== false ) {
return false;
}
}
}