- PR -

画面が更新されない

投稿者投稿内容
はやし
常連さん
会議室デビュー日: 2007/10/31
投稿数: 23
投稿日時: 2007-10-31 19:19
こんばんは、はやしと申します。
今回初めて投稿させて頂きます。

HTMLで表示しているsubmitボタンを押すと、CGIでそのボタンに対応した処理を
しつつ、HTMLファイルを作成し、それを表示しています。
因みにその画面はフレームで2つに区切られており、上部フレームのボタンを押すと、
下部フレームの表示が切り替わるはずなのです。

しかし、HTMLファイルは正しく作成されているのに、画面は更新されません。
もう一度ボタンを押したり再表示を押すと、更新されます。

PCの環境はWinXPでブラウザはIE6のSP2です。
これはネスケで実行するとこのような事は起きませんでした。
あと、WinNT IE5.5でも正常に動きました。

ブラウザのキャッシュを削除しても、この現象は直りませんでした。
自分で色々調べてはみたのですが、原因がわかりませんでした。

この問題が解決出来ず、3日程作業が止まっていて、かなり焦っています。
どうかご教授の程宜しくお願い致します。
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2007-10-31 20:03
#Insider.NET 会議室?

引用:

はやしさんの書き込み (2007-10-31 19:19) より:
HTMLで表示しているsubmitボタンを押すと、CGIでそのボタンに対応した処理を
しつつ、HTMLファイルを作成し、それを表示しています。
因みにその画面はフレームで2つに区切られており、上部フレームのボタンを押すと、
下部フレームの表示が切り替わるはずなのです。


上部フレームのformでtargetを指定している(当然下部フレーム)ということでいいんでしょうか?

「HTMLファイルを作成している」というのが意味不明ですが、CGIからHTMLを(クライアントに)返しているんですよね?そうでなければ画面表示は切り替わりません。

#HTMLファイルを上書きしておいてReloadすれば別ですが・・ってそういう状態ですかねぇ(汗

大変失礼ですが、CGIが「初めて」ということじゃないですよね?そのCGIはクライアントには「何を」返すようになっていますか?

[ メッセージ編集済み 編集者: shimix 編集日時 2007-10-31 20:05 ]
IIJIMAS
ベテラン
会議室デビュー日: 2006/12/06
投稿数: 77
投稿日時: 2007-10-31 22:08
リクエストの度にURLを変化するようにしてみるとかどうでしょうか。
(元のurl)?xxxxxx
(元のurl)?xxxxxx&yyyy

参考過去スレッド「件名:ASP.NETを使ったブラウザ上でのグラフ表示」
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=39352&forum=7&5
はやし
常連さん
会議室デビュー日: 2007/10/31
投稿数: 23
投稿日時: 2007-11-01 13:17
shimixさん、IIJIMASさん、早速お返事を頂いたのにこちらのお返事が遅れてしまい、
申し訳ございません。
どの会議室に投稿すればいいのか判断出来なくてこちらに投稿させて頂きました。
しかも説明も意味不明だったようですみません・・・。

CGIは初めてではないのですが、根本的に理解出来ていないようです。

すみませんが、もう少し説明させて下さい。

先ず、上部フレームにはボタンが複数個あり、submitボタンのvalueによって、
処理を分けています。
HTMLファイルはボタン毎に用意しているのでは無く、同じHTMLファイルを
上書きしている事になります。
サーバから返すHTMLには以下のようにHTMLファイルへのパスを指定して
いるので、HTMLファイルが正しく更新されているのであれば、きちんと
更新後のHTMLが表示されるものと思っています。

<frameset rows="250,*">
<frame name="FRAME1" src="上部フレーム用HTMLファイルのパス" scrolling="no" noresize>
<frame name="FRAME2" src="下部フレーム用HTMLファイルのパス">
</frameset>

因みにそれぞれのフォームで指定しているtargetは_topです。

IIJIMASさん
引用:

IIJIMASさんの書き込み (2007-10-31 22:08) より:
リクエストの度にURLを変化するようにしてみるとかどうでしょうか。
(元のurl)?xxxxxx
(元のurl)?xxxxxx&yyyy


有難うございます、試してみます。
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2007-11-01 14:08
引用:

はやしさんの書き込み (2007-11-01 13:17) より:
因みにそれぞれのフォームで指定しているtargetは_topです。


POSTしたらいったんフレームを解除して、再度フレームセットのhtmlを返しているのですか?「src="下部フレーム用HTMLファイルのパス"」は変化していないからキャッシュされても文句は言えないですね(汗

普通はtargetをFRAME2にして、CGIはhtmlファイルを上書きする代わりにそのhtmlの内容を返すものですが・・。静的な内容も書き換えるためにhtmlファイルを上書きしておきたければその処理実行してかまいませんが、動作の基本が違ってませんか?
はやし
常連さん
会議室デビュー日: 2007/10/31
投稿数: 23
投稿日時: 2007-11-01 14:28
[解決]
IIJIMASさんのアドバイスにあったように、ファイルパスに現在時刻を足して
みましたところ、画面が更新されるようになりました。
有難うございました。

shimixさん
引用:

shimixさんの書き込み (2007-11-01 14:08) より:
普通はtargetをFRAME2にして、CGIはhtmlファイルを上書きする代わりにそのhtmlの内容を返すものですが・・。静的な内容も書き換えるためにhtmlファイルを上書きしておきたければその処理実行してかまいませんが、動作の基本が違ってませんか?



下部フレームの一番下に「ページの先頭に戻る」というアンカを貼っている為、
targetを_topにしてあるのですが、そういった場合はどのようにすれば
よいのでしょうか?
また「静的な内容も書き換えるためにhtmlファイルを上書き」というのが、
よくわかりません・・・。
申し訳ないのですが、もう少し詳しく教えて頂けないでしょうか?

shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2007-11-01 15:50
解決したようなので蛇足ですが(汗

引用:

はやしさんの書き込み (2007-11-01 14:28) より:
下部フレームの一番下に「ページの先頭に戻る」というアンカを貼っている為、
targetを_topにしてあるのですが、そういった場合はどのようにすれば
よいのでしょうか?


それは別にそのままでいいのでは?フォームからCGIにsubmitするのとアンカは別の話でしょう。

引用:

また「静的な内容も書き換えるためにhtmlファイルを上書き」というのが、
よくわかりません・・・。
申し訳ないのですが、もう少し詳しく教えて頂けないでしょうか?


普通はFRAME1側のフォームでtargetをFRAME2にしておいて、CGIは「(今現在上書きしている)htmlファイルの内容」をファイルに落とさずにクライアントに返すのが一般的です。

ただ、当該URLに最初アクセスしたときにFRAME2に表示される内容を「最後に表示した内容」にしたければhtmlファイルも書き替えておけばいいだろうと思います。

#FRAME1でPOSTしたものでFRAME2を書き替えるのに、フレームセットごと再読み込みする
#のであればフレームセットにする必要があるのか?とも思います



[ メッセージ編集済み 編集者: shimix 編集日時 2007-11-01 15:52 ]
はやし
常連さん
会議室デビュー日: 2007/10/31
投稿数: 23
投稿日時: 2007-11-01 16:12
shimixさん、お返事有難うございます。

引用:

shimixさんの書き込み (2007-11-01 15:50) より:
それは別にそのままでいいのでは?フォームからCGIにsubmitするのとアンカは別の話でしょう。


何か勘違いしていたようです・・・。


引用:

shimixさんの書き込み (2007-11-01 15:50) より:
#FRAME1でPOSTしたものでFRAME2を書き替えるのに、フレームセットごと再読み込みする
#のであればフレームセットにする必要があるのか?とも思います


これはどういう意味でしょうか?
度々すみません、教えて下さい。

[ メッセージ編集済み 編集者: はやし 編集日時 2007-11-01 16:15 ]

スキルアップ/キャリアアップ(JOB@IT)