[解決済み] jQuery が Ajax 呼び出しの終了を待って戻るようにするにはどうすればよいですか?
2022-02-05 06:59:22
質問
サーバーサイドの関数で、ログインを要求するものがあります。ユーザーがログインしている場合、この関数は成功時に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;
}
}
});
});
解決方法は?
が不要な場合は
$.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
関数を使用します。これらの関数は、サーバーからレスポンスを受信したときにのみ呼び出されます。
関連
-
[解決済み] Jquery.comのサイトのソースファイルはどこにあるのでしょうか?ダウンロードのリンクがないのですが
-
[解決済み] 無効な JSON プリミティブ ERROR
-
[解決済み] なぜbloodhound.get()は未定義を返すのですか?
-
[解決済み] JW-Player - アンロードするには?
-
[解決済み] jQuery Ajax呼び出し後のリダイレクトリクエストを管理する方法
-
[解決済み] jQueryを使用してハイパーリンクのhref属性を変更する方法
-
[解決済み] どうすればjQueryに非同期ではなく、同期のAjaxリクエストを実行させることができますか?
-
[解決済み] jQuery の Ajax リクエストがすべて終了するまで待ちますか?
-
[解決済み] jQuery に何かを実行する前にすべての画像の読み込みを待つように指示する公式な方法
-
[解決済み] jQueryを使って「Please Wait, Loading...」というアニメーションを作成するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] jQuery .load()が動作しない
-
[解決済み] jQueryのディファレンシャルとプロミス - .then() vs .done()
-
[解決済み] TypeError: $.ajax(...) is not a function?
-
[解決済み] jQuery が Ajax 呼び出しの終了を待って戻るようにするにはどうすればよいですか?
-
[解決済み] jQueryで文字色を変更するにはどうすればよいですか?
-
[解決済み] jQueryでページスクロールをプログラム的に無効にする方法
-
[解決済み] jQueryで関数呼び出しを繰り返す方法
-
[解決済み] JQuery Fancyboxが動作しない
-
[解決済み] jQueryで背景画像をアニメーションで変化させる
-
[解決済み] jQueryの再帰性が高すぎる