javascriptで組んだ、複数のAjax処理関数を実行する直前に、モーダル画面を使って「読み込み中」を表示させようとしても、表示されないという現象に出くわしたため質問させていただきます。
よろしくお願いいたします。
※今回の質問ではPromiseなどは使わず、純粋なjavascript+jquery環境での前提とさせていただきます。
前提・実現したいこと
既に単体レベルでは正常動作を確認できている、複数のAjax処理メソッドを実行する直前に
「読み込み中」とモーダル画面表示させる「処理X」と、Ajax処理が終わった場合に、
モーダル画面を消す「処理Z」で挟み撃ちした組み方をしました。
下記のソースで説明します。
JavaScript
1 2処理X(); //モーダル画面を表示させる 3Ajax処理A(); 4Ajax処理B(); 5Ajax処理C(); 6処理Z(); //モーダル画面を消す
発生している問題・エラーメッセージ
今回の問題は「読み込み中」の画面が全く出ない(もしくは目視で確認できないほど一瞬)という現象です。
ブラウザの「F12開発者ツール」でコンソールを確認しましたが、エラーメッセージは全く出ませんでした。
ブラウザの「F12開発者ツール」でデバッグを解除した状態で動かすと、モーダル画面が全く表示されず、Ajax処理A~Cが処理されてしまうという現象に困っております。
試したこと
ブラウザの「F12開発者ツール」で1ステップずつ確認をしたところ、「読み込み中」のモーダル画面はきちんと出てAjax処理が終わったらモーダル画面が消えることを確認しました。
また、jQueryで$.ajax()
を実行させるときのオプションではasync:false
を追加させています。
上記のソースで示したAjax処理のメソッドA~Cで共通させて設定しています。
javascript
1 2処理X(); //モーダル画面を表示させる 3Ajax処理A(); 4Ajax処理B(); 5Ajax処理C(); 6処理Z(); //モーダル画面を消す 7 8//メソッドの定義 9function 処理X(){ 10 $('.モーダルのクラス').remove(); 11 $('body').append(パーツを組み込むHTML); 12} 13 14function 処理Z(){ 15 $('.モーダルのクラス').remove(); 16} 17 18function Ajax処理A(){ 19 $.ajax({ 20 type: "POST", 21 url: "***.py", 22 data: {"parameter":"aaa"}, 23 async: false 24 }).done(function(data) { 25 //HTML構築処理 26 }); 27} 28function Ajax処理B(){ 29//URL以外はAjax処理Aと設定は同じ 30} 31function Ajax処理C(){ 32//URL以外はAjax処理Aと設定は同じ 33} 34
補足情報(FW/ツールのバージョンなど)
OS:MasOS X (High Sierra)
ブラウザ:MacOS版 GoogleChrome
jQuery:3.2.1
回答1件
あなたの回答
tips
プレビュー