我这里有点小问题,伙计们。我正在尝试实现以下场景:
-
用户打开主页,看到其他用户和单击的列表
-
我向服务器资源发出Ajax请求,以验证用户
如果已登录,则向另一台服务器发出另一个ajax请求
资源将其实际添加到用户的好友列表中。
听起来很简单?下面是我所做的:我创建了一个函数
isLoggedIn
这将向服务器发出第一个请求,以确定用户是否已登录。我使用
jQuery.ajax
function isLoggedIn() {
$.ajax({
async: "false",
type: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "/isloggedin",
success: function(jsonData) {
alert("jsonData =" + jsonData.LoggedIn);
return jsonData.LoggedIn;
}
});
}
返回的JSON非常简单,如下所示:
{ LoggedIn: true } or { LoggedIn : false }
现在,此方法实际工作并正确显示警报:
JsonData = true
如果已登录,以及
JsonData = false
如果没有登录。
到目前为止还没有问题,当我尝试调用此方法时,问题就出现了:我这样调用它:
$(".friend_set .img").click(function() {
debugger;
if (isLoggedIn()) {
alert("alredy logged in");
trackAsync();
popupNum = 6;
}
else {
alert("not logged in"); //always displays this message.
popupNum = 1;
}
//centering with css
centerPopup(popupNum);
//load popup
loadPopup(popupNum);
return false;
});
使命感
伊斯洛格丁
总是回来
false
,然后它返回
false before the ajax request finishes (because the message
jsonData=true
is displayed after the message "not logged in". I made sure that the request is **NOT** Asynchronous by stating
async:false`!
显然,它仍然在异步工作。伙计们,我错过了什么?