ログインを必要とするサーバー側関数があります。ユーザーがログインしている場合、関数は成功時に 1 を返します。そうでない場合、関数はログイン ページを返します。
Ajax と jQuery を使用して関数を呼び出します。クリック関数を適用した通常のリンクを使用してリクエストを送信します。ユーザーがログインしていない場合や関数が失敗した場合は、Ajax 呼び出しが true を返して href がトリガーされるようにします。
ただし、次のコードを使用すると、Ajax 呼び出しが完了する前に関数が終了します。
ユーザーをログインページに適切にリダイレクトするにはどうすればよいでしょうか?
$(".my_link").click(
function(){
$.ajax({
url: $(this).attr('href'),
type: 'GET',
cache: false,
timeout: 30000,
error: function(){
return true;
},
success: function(msg){
if (parseFloat(msg)){
return false;
} else {
return true;
}
}
});
});
ベストアンサー1
関数がすぐに返されることを望まない場合は$.ajax()
、async
オプションを次のように設定しますfalse
。
$(".my_link").click(
function(){
$.ajax({
url: $(this).attr('href'),
type: 'GET',
async: false,
cache: false,
timeout: 30000,
fail: function(){
return true;
},
done: function(msg){
if (parseFloat(msg)){
return false;
} else {
return true;
}
}
});
});
ただし、これは AJAX の趣旨に反することに注意してください。また、応答は および 関数で処理する必要がありますfail
。done
これらの関数は、サーバーから応答を受信した場合にのみ呼び出されます。