最新閲覧日:

複数のフレーム間でデータを受け渡し、その度に最新のデータを表示する
画面を作っています。
そのフレームでのファイル呼び出しが時々おかしいのです。

フレームの構造は
(A.asp内のソース)
     <frameset cols="260,*">
         <frame src="B.asp?ID=<% =ID %>" name="left">
         <frameset rows="102,*">
              <frame src="C.asp" name="upper">
              <frame src="D.asp" name="bottom">
         </frameset>
     </frameset>

そしてD.aspでは<iframe src="F.asp"></iframe>と
更に別ファイルを表示させています。

値渡しの流れは
 【C.asp】
  (1)Submitボタンで自画面に遷移、エラー処理終了
  (2)window.open('E.asp','_self');
  (3)E.aspに遷移
  ↓
 【E.asp】
  (1)Submitボタンで自画面に遷移、エラー処理 
  (2)window.open('C.asp?Mode=2','_self');
  (3)C.aspに遷移
  ↓
 【C.ASP】
  (1)Mode=2を受け取れば
  (2)window.open('D.asp','bottom');

これをupperで繰り返しています。
D.aspは最初のA.asp表示時にbottomに表示され、
以降はC.asp?Mode=2の時にのみ呼び出されます。

CとEには入力項目がそれぞれ1つあり、Enterキー押下・チェック処理終了後に
window.openで遷移先に移ります。

E.aspからC.aspに遷移すると、自動的にD.aspも呼び出されるはずなのに
時々呼び出されないという現象が起きます。
この現象はC・Eの入力・Enterをすばやく繰り返すとよく起きます。
ゆっくりすると全く起きませんが、ひどい時には3回に1回起きます。
クライアント1台でも起きるので、サーバの負荷とは関係ないようです。

長々とややこしい説明でしたが、どなたかわかる方教えてください!!

A 回答 (1件)

原因はよく分かりませんが、D.aspのキャッシュが読み込まれているか、処理の時間差によるものではないでしょうか。


キャッシュが読まれているなら、繰り返しの操作で常に起こっているはずですが・・・念のためD.aspには

Response.Expires = -1
Response.AddHeader "Pragma", "no-cache"
Response.AddHeader "Cache-control", "no-store"

と最初に記述してみては?

Javascriptの処理時間による問題であれば、処理の流れを少し変えればよいと思います。

Modeが2の時は、直接E.aspを開かず、D.aspを開く。
D.aspのOnLoad時にE.aspを開く様にすれば、D.aspが開かない限りE.aspは開かないことになると思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
・・・できました~!!
D.aspとさらにF.aspにも記述してみましたところ、正常に動作しました。
キャッシュさせないように、全てのASPファイルの<HEAD>部分に
   <META HTTP-EQUIV="Content-Type" Content="text/html; charset=x-sjis">
   <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
と書いていたのに、なぜキャッシュが読み込まれていたのか謎ですが、動いたのでぃ良し(笑)!

『時々処理が呼ばれない』と件名に書きましたが、
正常に動いたソースを前にして落ち着いて考えると
どうやら実際にはちゃんと呼ばれていたようです。
F.aspでキャッシュが読み込まれて前のデータが表示されていた為、
呼ばれていないように見えたようです。

大変助かりました。ありがとうございました。
また機会がありましたら教えてください(ペコリ)。

お礼日時:2002/04/12 14:04

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


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ