
表示に5秒くらいかかるページを作っています。表示されるまで、「処理中...」のメッセージを表示させたいと思っています。Googleで検索したところ、
http://himajin.moo.jp/java/speed/loading.html
というページを見つけまして、下記のように若干変更して書いてみました。
----
<script language="JavaScript"><!--
function loading(){
document.getElementById("nowload").style.display= "none";
}
onload=loading;
// --></script>
<noscript>表示するにはscriptを有効にしてください。</noscript>
<div id="nowload"style="position:absolute;text-align:center;font-size:40px;width:100%">
<b>処理中....</b>
</div>
<div id="contents">
<?PHP
ここに5秒くらいかかるPHP処理
?>
</div>
----
しかし、実行してみると5秒くらい画面に何も表示されず、その後処理し終わった画面が表示されるような挙動です。よく見てみると最終の画面が表示される直前の一瞬「処理中...」の文字が出ているようです。
つまり、「処理中...」の文字をまずはすばやく出して欲しいのに、最終の画面表示とほぼ同時に出力されるような挙動をしています。
まずは「処理中...」の文字を出すにはどうすればいいのでしょうか?ご存知の方、ご教授ください。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
こんにちは
PHPはあまり扱っていないので参考程度にしかならないかもしれないですけど・・・
<?php ~ ?>の部分を外部ファイルにしてiframeとかで読み込むというのではダメですか?
扱ってないので時間のかかる処理が思いつかなかったのでとりあえず表を書いてsleep(5)で5秒ほど止めてみたのですがそのままやったときは読み込み中フリーズしたような感じでしたがPHP処理を外部ファイルでiframeに読み込んでやるとうまくいきました
多分なのであってるかどうかは分かりませんが</body>まで読み込んでページが表示されるので参考サイトの場合は読み込んで外部ファイルであるimgファイルを表示する時間だけNow Loadingを表示してるのではないでしょうか?
ですので</body>に行き着くまでに5秒の処理時間が必要になる今回の場合、その間空白のページが表示され、ページの表示直前に一瞬だけ処理中が表示されてるのだと思います
なので上記の場合もiframe内の表示はされていないけどページ(now Loading)は表示され、iframeの表示がすべて終わったらfunction loading()が行われるのだと思う
あくまでも推測ですので定かではないですけど(><)
一応書いておきますけどPHP5です
No.3
- 回答日時:
>の部分が先に吐き出さないのですよ
といわれても、サーバー側は吐き出しているとおもいますよ。
出力がとまっている5秒の間にブラウザのストップボタンを
おしてソースを確認してみるとか・・・
あとはPHPのバージョンによっては多少挙動が違うのかも。
わたしの環境は4.4.4ですね
この回答への補足
ありがとうございます。
そうですね。ストップボタンを押して確認してみます。確認しても対処方法はわかりませんが・・・(x_x;;)
PHPは5を使っています。PHPのバージョンの違いもあるかもですね。
No.2
- 回答日時:
phpのバッファリングを重い処理のまえにはきだしてやるだけです。
<script language="JavaScript"><!--
function loading(){
document.getElementById("nowload").style.display= "none";
}
onload=loading;
// --></script>
<noscript>表示するにはscriptを有効にしてください。</noscript>
<div id="nowload"style="position:absolute;text-align:center;font-size:40px;width:100%">
<b>処理中....</b>
</div>
<div id="contents">
<?PHP
flush();
sleep(5);
?>
</div>
この回答への補足
ありがとうございます。
そうですよね。そう考えていた(サンプルでも)のですが、
<div id="nowload"style="position:absolute;text-align:center;font-size:40px;width:100%">
<b>処理中....</b>
</div>
の部分が先に吐き出さないのですよ。挙動としては
<div id="contents">
<?PHP
flush();
sleep(5);
?>
</div>
の表示といっしょか直前に吐き出されるような挙動をしています。
私が、勘違いしてミスったプログラムをしているのでしょうか。う~ん???
No.1
- 回答日時:
PHPと書かれているということは、「時間がかかるのはサーバ側処理」ということですね?
ならば、これではだめです。
この画面を修正するのではなく、「このPHPを含む画面を呼び出している画面」側にJavaScriptを入れる必要があります。
<script>
function submit_func(){
// 処理中メッセージを表示する
// 5秒以上かかる処理をsubmitする
}
</script>
<form action="5秒以上かかる処理を含むphp">
<input type="button" name="OK" onClick="submit_func();">
</form>
この回答への補足
回答ありがとうございます。早速行ってみました。
動きとしては、
「読み出している画面」にて読み出しボタンを押す。
↓
「処理中...」のメッセージ表示
↓
画面の表示が消える
↓
5秒間時間経過
↓
読み出されている画面表示
となります。微妙に期待していた動きと違います。私が認識違いをしているのでしょうか。
もし、ご存知であればご教授ください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
tryの終了
-
BLOB型の画像データを表示したい
-
Javaプログラムから外部コマン...
-
JavaScriptのif文について
-
[Java] while(true)の意味
-
JavaScriptとJSPの連携
-
Tomcat高負荷時の設定について
-
JavaScriptからJAVAクラスを呼...
-
Tomcatのスレッドを破棄する方法
-
doGetとdoPostの違い
-
WPF C#でF10のイベント取得方法...
-
「タイプ初期化子が例外をスロ...
-
private static という変数の修飾
-
mainメソッドのthrows節で設定...
-
レコード件数の表示
-
【JAVA】与えられた金額を貨幣...
-
複数の変数を宣言する時、同時...
-
エクセルVBAで、条件に一致する...
-
Excelで =EMBED("Acrobat Docu...
-
EXCEL VBAにて動的にCheckBOXを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
[Java] while(true)の意味
-
tryの終了
-
Javaでのデバッグコード削除
-
Javaアプリケーション実行の返...
-
Javaプログラムからポップアッ...
-
onBlurとonFocusの処理順序につ...
-
Tomcat高負荷時の設定について
-
数値の定数を付ける時
-
アコーディオンメニューをアン...
-
ラジオボタンの選択判定
-
ラベルの表示までが異常に遅い...
-
ExcelVBA で文字列の特定の文字...
-
C#で別スレッドの終了を知りたい
-
素数判定を再帰処理で
-
JavaScriptからJAVAクラスを呼...
-
switch文の中に、throws new Ex...
-
PHPでDB処理中にプログレスバー...
-
C#の処理をリアルタイムに表示...
-
Windowsサービスの処理
-
ftp 同時複数接続の負荷テスト...
おすすめ情報