![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になります。
PERLにて以下のことをしたいと思っているのですが、お知恵をお貸し頂けるでしょうか。
「内部処理中にNow Loadingみたいなページを表示させたいのですが、どうもうまくいかない。」
以下のような感じです。
===============================================
print "Content-type: text/html\n\n";
print << "EOF";
<html>
<head>
・
・
・
</head>
<body>
・
・
(<body>~</body>の間にjsでNow Loadingを表示するよう設定)
EOF
&sub #←内部処理用サブルーチン
#処理後html文を吐くもの
print << "EOF";
</body>
</html>
EOF
===============================================
こんな感じで書いて、jsを使ってNow Loadingを表示するようにしようと思ったのですが、これだと、&subが先に処理された上でNow Loadingと表示されてしまうようで、意味のないものになってしまいます。
そこでヘッダー部分(最初のヒアドキュメント)部分までを先に表示した上で&subが動くようにし、それが完了したら最後のフッター部分を表示するようにしたいのですが、どのような方法があるでしょうか?
非常に不明な文で申し訳ないのですが、アドバイス頂ければ幸いです。
よろしくお願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
アイデアはなかなかいいですが、ANo.1の方がおっしゃるようにprintの実行とブラウザに返されるタイミングを厳密に制御することは難しいです。
仮にできたとしても、ブラウザからみれば「データの続きがなかなか来ない」と見なされタイムアウトになる可能性もある、という致命的な問題もあります。
ANo.1の方が紹介されている方法の他に、NNならサーバープッシュという技術もありますが、いまどきはあまり一般的じゃないような気がします。
あとは、これが良いかは別として、逆にクライアントプルで実現できなくはないです。
スクリプトが、まだ処理中(待たせる)なら
------------
<META HTTP-EQUIV="REFRESH" CONTENT="10~
…
Now Loading…
------------
というようなHTMLを吐き出し、
処理が完了したら
------------
完了
------------
などと、その結果を表示、というものです。つまり○秒ごとに完了したかどうか聞きに行く、という考えです。
ちなみに細かいことですがLoadingというと「読み込み中」という意味になりませんか?Process is executing...とかかな?
こちらもお礼が遅れ申し訳ありません。
なるほど、そういう方法もありかもです。
一度試してみます。
ご回答ありがとうございました。
No.1
- 回答日時:
CGIでは、基本的に処理を全て終えた後に、クライアントにサーバからのレスポンスが返ります。
printした時点で出力されているのではありません。最近流行の技法はAjaxになるかと思います。とりあえずNow Loadingと書かれた出力を表示し、ページ内からJavaScriptのXMLHttpRequestを用いてプログラムにアクセス、レスポンスが得られたらJavaScriptでデータを差し替えるというものです。
ひとまず調べてみることをお勧めします。
参考URL:http://d.hatena.ne.jp/keyword/Ajax
お礼が遅くなり申し訳ありません。
なるほど。ブラウザ出力は最後になってしまうんですね。
Ajaxというのは初耳ですので、少し調べてみます。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- JavaScript 指定時間になったら、WEBサイトの更新を自動で行うには…? 3 2022/04/28 22:14
- HTML・CSS flex の各子要素を横幅 100% にしたい 1 2022/09/22 21:25
- Access(アクセス) エクセルのVBAについて教えてください。 4 2023/01/21 10:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perl/Tk使う利点は?
-
JSONで文字列が長い時
-
pythonで演算子を変数に代入す...
-
Application.ScreenUpdating = ...
-
文字のカラーとフォントの指定...
-
結果を得て自動的にページ移動...
-
文字列配列をメンバにもつ構造...
-
<python>数字あてゲーム
-
Use of uninitialized value ---
-
名前の聞き方
-
pythonの初心者です!コマンド...
-
pythonを使ったプログラミング...
-
プロトタイプ宣言のワーニング...
-
VBA他のブックから値のみ貼付す...
-
Perlをヒアドキュメント内で記...
-
sendmail でのヘッダ部分Conten...
-
javascriptでCGIを実行するには
-
Perlにて、sendmailを使用する...
-
シェルで、ランダム関数を変数...
-
プルダウンで別項目に値を代入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のflagの使い方が分かりま...
-
VB6で、長い時間かかる処理...
-
初回起動のみ判別したい
-
arduino の割り込み処理について
-
回数を指定しないで空白行まで...
-
スカラー変数に処理を入れる
-
実行中の変数の中身をイミディ...
-
perl:ループのカウンタ変数の値...
-
処理終了後、他のページへジャ...
-
$postflag=1とか$flag=1とかっ...
-
VBAのCallステートメントについて
-
プログラミング、VB.NET(初歩です)
-
同パッケージ内の関数を呼び出...
-
10000通りのシリアル番号を生成...
-
C言語のプログラミング
-
SetDlgItemInt( ) c++
-
問題作成のWebアプリの作り方を...
-
フラグをたてる、、の意味を教...
-
内部処理中にNow Loadingみたい...
-
バッファリング処理を高速化し...
おすすめ情報