AjaxとCSSを利用して、データベースを3秒おきに確認し、状況を計算してプログレスバーを表現しようとしています。
JavaScriptの部分は
JavaScript
1$(function(){ 2 var per = 0; 3 var progressBar = document.getElementById('uploadprog'); 4alert(progressBar); 5 function updateProgress(newValue){ 6 if(newValue < 0){ 7 newValue = 100; 8 [画面遷移]; 9 } 10 progressBar.value = newValue; 11 setTimeout( 12 function(){ 13 $.ajax({ 14 type: "POST", 15 url: "[データチェック用ページ]", 16 data: { "PER": newValue}, 17 async: false, 18 success: function(j_data){ 19 obj = JSON.parse(j_data); 20 per = obj.Percent; 21 } 22 });updateProgress(per); 23 }, 3000); 24 } 25 updateProgress(per); 26}
と記載しています。
データチェック用ページではパーセントを取得し、変数名:Percentに入れて返しています。
その中で処理が完了すればPercentに-1を入れて返し、画面遷移する動きとなっています。
ローカルではVisual Studioで開発をしていてデバック確認を行っています。
そこでローカルでのデバック確認と、Webサイトを発行して配置した時とで挙動が違うパターンが発生して解決出来ません。
ローカル:Windows 10
Webサイト:WindowsServer 2008 R2
Microsoft Edge、Firefox共に
ローカル…プログレスバーが表示され、処理も正常に行われる
Webサイト…プログレスバーが表示され、処理も正常に行われる
Internet Explorer 11
ローカル…プログレスバーが表示され、処理も正常に行われる
Webサイト…プログレスバーが表示されず、処理が完了しない
処理が正常に行われれば100%に達して処理が完了し、画面遷移するのですが、処理が完了しないIE11でWebサイトではAjaxで飛ばした結果が全く変わらずに返ってくる状態でした。
(一度取得された同じ数字が何度も出てくるのをalertで確認)
そちらはまた別途確認が必要ですが、プログレスバーが表示されないのが一番の問題点です。
このサンプルに書いている「alert(progressBar);」の結果は
プログレスバーが表示される場合…「Object HTMLProgressElement」
プログレスバーが表示されない場合…「Object」
となります。
ローカルでは表示されるため、ブラウザの問題ではないとは思っているのですが、なにか他に理由がありますでしょうか?
プログレスバーのCSSはhttps://developer.mozilla.org/ja/docs/Web/HTML/Element/progressを参考にしています。
回答2件
あなたの回答
tips
プレビュー