プロが教えるわが家の防犯対策術!

プログラム実行中の待機ページを作りたいのですが方法がわかりません。

私はPerlを使ってCGIを作成しようとしています。
出力するHTMLページは3枚です。

1、フォーム入力をするページ
2、Perlプログラムが動いている間の待機ページ
3、結果出力ページ

です。
1から得た情報をもとにPerlプログラムが動きます。ここはActionでページ移動します。
結果が出るまでにそこそこ時間がかかるので
2の待機ページにおいてGIF画像を出力し、暇を持て余さないようにします。
プログラムが終了すると3のページに移動し、結果を出力する。

というような仕様です。
このような事を実現できますか?
どのようにすれば実現できるでしょうか?

実際に実現している人はいるのですが仕組みがわかりません。
わかりにくい説明で申し訳ありませんがどなたご教授頂ければと思います。

宜しくお願い致します。

A 回答 (1件)

ページ移動は不要です。


移動させる手もありますが、どちらにしても一旦出力したものを書き換えるのでJavaScriptが必要になります。移動させる場合、直でリンクされてもこまるので、referrer調べたり sessionやcookie等で確認が必要になったり、またはjavaScript有効無効の考慮などかえって面倒になりますよ。

以下移動しないタイプの流れ
---------------------------------------------------------○○.cgi
#!/usr/bin/perl
$| = 1; #バッファ無効

# 考え方としては、処理の前にとにかく待機中画像までを表示。
# ただし途中まで。htmlは完了させない
print "Content-type: text/html\n\n";
print <<EOL;
<html><head></head><body>
□□□□□□□□□□□□□□□□□□□□□□□□□<br>
□□□□□□□□□□□□□□□□□□□□□□□□□<br>
<script type="text/javascript">
document.write("<div id='watingDiv'>");
document.write("<img src='クルクル.gif'>ただいま処理中です。");
document.write("</div>");
</script>
EOL


# 時間のかかる本処理~
sleep 5;


# 本処理が完了次第、JavaScriptで待機中divを消す
print <<EOL;
<script type="text/javascript">
document.getElementById('watingDiv').style.display='none';
</script>

処理が終わりました。<br>
</body></html>
EOL

exit;
---------------------------------------------------------------
※□□□~はIE対策。(バイト数が少ないと勝手にバッファしてしまう)
 もろちん削除してかまいません。
※移動がよければ、最後にdivを消すのではなく、
 location.href='完了ページ'; 等で飛ばしてやればよいでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!