前提・実現したいこと
フォームの送信ボタンを押すと非同期で情報を送信し、正しく送信できれば、サンクスページに遷移するお問合せフォームがあるのですが、
非同期処理中に時間がかかるのでロードアニメーションを実装したい
発生している問題・エラーメッセージ
ロードアニメーションの実行タイミングがずれる
送信ボタンをクリックし、サンクスページに遷移するまで、また、エラーメッセージがアラートされるまでの間ローディングアニメーションを処理させたいのですが、下記では、アニメーションが表示されない、エラーがアラートされ、アラートを消した後にアニメーションが発火するといったタイミングになっています。
$(function() { var xhr = new XMLHttpRequest(); var send_flag = false; xhr.onreadystatechange = function() { console.log('hi'); console.log('hide'); switch ( xhr.readyState ) { case 0: console.log( '未初期化' ); break; case 1: $("#pageloader").fadeIn(); console.log( '送信中' ); break; case 2: console.log( '待ち' ); break; case 3: console.log( '受信中:'+xhr.responseText.length+' bytes.'); break; case 4: console.log('受信完了'); _returnValues = JSON.parse(xhr.responseText); console.log(_returnValues); if(xhr.status == 200) { location.href = './complete.html'; } else { $("#pageloader").fadeOut(); alert("エラーが発生しました。\n" + _returnValues.message); } break; } }; var data = JSON.stringify({ companyName: document.getElementById('company').value, name: document.getElementById('name').value, email: document.getElementById('email').value, phoneNumber: document.getElementById('tel').value, desiredAmount: document.getElementById('price').value }); console.log(data); xhr.open('POST','https://url', false ); xhr.setRequestHeader( 'Content-Type', 'application/json' ); xhr.send(data); return false; }); });
補足情報(FW/ツールのバージョンなど)
$("#pageloader").fadeIn();でアニメーションを表示し
$("#pageloader").fadeOut();で終了しよとしています。
非同期処理中の良いタイミングでアニメーションが発火できるよう何かアドバイスをいただければ幸いです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/16 01:16