我在這裏遇到了一些問題。我試圖實施以下情形:
- 用戶打開主頁,看到其他用戶的列表,點擊 添加一個到他的好友列表。
- 我向服務器資源發出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;
});
調用isLoggedIn
總是返回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`!
雖然它顯然仍然是異步工作的。我在這裏錯過什麼人?
不要緊'{異步:「 false「}'與'{async:false}'? – 2009-10-07 13:38:55
@Cory Larson不,沒關係,事情是,該方法在ajax請求完成之前返回false。 – Galilyou 2009-10-07 13:42:50