如果用户存在,我需要我的函数返回FALSE,如果数据库中不存在用户,则需要TRUE。 这是我的功能代码。 Firebug向我展示变量标志始终未定义。我该如何解决?
function checkLogin(login, n) {
var flag;
jQuery.ajax({
type: "POST",
url: "${pageContext.request.contextPath}/checkLogin.ajax",
data: "login="+login.val(),
success: function(response){
if (response.status == "EMPTY") {
alert('Login is free - you can take it');
flag = true;
}
if (response.status == "EXISTS") {
alert('Login already exists in Database');
login.addClass( "ui-state-error" );
updateTips( n );
flag = false;
}
}
});
return flag;
}
答案 0 :(得分:0)
AJAX是异步的。您的return语句将在更改标志的回调代码完成之前发生。您需要更改逻辑,以便函数不返回标志,而是将其传递给您定义的回调。
答案 1 :(得分:0)
有几个问题:
ajax
将异步工作,因此在您返回等待设置的值之前,您无法确定它是否会完成(因此设置了标志); error
参数指定处理程序,因此如果出现问题,您将无法了解它。答案 2 :(得分:0)
你不能归还旗帜.. 它将直接执行而不考虑你的ajax调用,因此在你的ajax调用正在进行之前,它将在ajax操作完成之前返回标志。 它不会起作用
您可以获取$ .deferred的帮助
<强> look at it 强>
答案 3 :(得分:-1)
尝试将数据发布为data: "login:"+login.val(),
使用:而不是=
并尝试使用'“+ +”'
发布数据