私はここで少し問題があります。ユーザーがホームページを開き、他のユーザーのリストを見て、彼の友人リストに1を追加する をクリック
- :私は、次のシナリオを実装しようとしています。
- ユーザーが にログインしているかどうかを確認するためにサーバーリソースにAjaxリクエストを発行し、別のサーバーに別のAjaxリクエストを発行します。 リソースを実際にユーザーのフレンドリストに追加します。
音が簡単ですか?ここに私がしたことがあります:ユーザーがログインしているかどうかを判断するためにサーバーに最初のリクエストを発行する関数isLoggedIn
を作成しました。このリクエストはjQuery.ajax
メソッドを使って発行します。ザ・はJSONは非常に簡単です返さ
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;
}
});
}
、それは次のようになります:ここにありますように私の関数が見え
が{ 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}'? –
@Cory Larsonいいえ、問題はありません。つまり、メソッドはajaxリクエストが完了する前にfalseを返します。 – Galilyou