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

フレームの構造は
(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台でも起きるので、サーバの負荷とは関係ないようです。

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

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aと関連する良く見られている質問

Q と <% %>は違うの??

ASP開発をしています。

あるASPでIncludeファイルで配列宣言
Dim gsABC(10)を宣言します。

Includeファイルの中身
<Script Language="VBSCRIPT" RUNAT="SERVER">
Dim gsABC(10)
</script>

そして、ASPファイルでその変数gsABC(0)を
使おうとするとエラーが発生します。

けれども、Includeファイルの中身を
<%
Dim gsABC(10)
%>

にすると正常に動きます。
2つは同じものだと思っていたのですが、
これによって違うものなのかと認識するように
しなければと思ってますが・・・

どこが違うのか分かりません。

どなたか分かりやすく簡単でいいですから
説明して頂けないでしょうか?
よろしくお願いします。

Aベストアンサー

おすすめは後者の 「 <% Dim gsABC(10) %> 」です。
Includeでしたら別に構いませんが、前者だとASPやHTMLに拡張子を決めてしまうとソースが丸見えです。
開発でもやりましたが、VB系のソースは基本的に後者だと思っています。

参考URL:http://tryasp.winscom.co.jp/sample/

Qエラー 'ASP 0115' について

メールサーバーへ接続し、メールを送信する際、
下記、エラーが生じてしまいます。
-----------------------------------------------
Active Server Pages エラー 'ASP 0115'
予期しないエラーです
/sendNoticeMail.asp
外部オブジェクトでトラップできるエラー (C06D007E) が発生しました。スクリプトの実行を続行できません。
-----------------------------------------------
まったく同じプログラムである他のサーバーでは生じないのですし、他のメール送信以外ですとASPは正常に動きます。
レジストリ等の問題でしょうか?
いろいろと調べてみたのですがどうしても分かりません。
分かる方、教えてください。よろしくお願いします。

Aベストアンサー

URLの解決方法はもう試しましたか?

参考URL:http://support.microsoft.com/kb/210457/ja

Aベストアンサー

gotoPageFromAA011
という関数は、JavaScriptの関数です。

書き方や呼び出し方云々の問題ではなく、直接実行はVBScriptで行える場所にはありません。

Call gotoPageFromAA011()
↑よってこの部分は不要です。


要は、ログインボタンエレメントを取得して、クリックさせてあげると、中で勝手にJavaScriptが実行します。


gotoPageFromAA011をコメントアウトし、以下のコードを追加してください。

'Call gotoPageFromAA011() ← コメントアウト

'↓以下追加
Call SubmitFunctionCall(objIE.Document)

Sub SubmitFunctionCall(p_doc)
Dim l_divLogin
Set l_divLogin = p_doc.getElementById("loginForms")

Dim l_divSec
Set l_divSec = l_divLogin.ChildNodes(0)

Dim l_htmTbl
Set l_htmTbl = l_divSec.ChildNodes(0)

Dim l_htmTblRow
Set l_htmTblRow = l_htmTbl.Rows(0)

Dim l_htmTblCell
Set l_htmTblCell = l_htmTblRow.Cells(1)

Dim l_htmBtn
Set l_htmBtn = l_htmTblCell.ChildNodes(0)
Call l_htmBtn.Click()
End Sub


ってかこの手の質問は、「ASPカテゴリ」ではなく、「JavaScriptカテゴリ」か「VBカテゴリ」に質問した方が素早い回答を得られますよ。

gotoPageFromAA011
という関数は、JavaScriptの関数です。

書き方や呼び出し方云々の問題ではなく、直接実行はVBScriptで行える場所にはありません。

Call gotoPageFromAA011()
↑よってこの部分は不要です。


要は、ログインボタンエレメントを取得して、クリックさせてあげると、中で勝手にJavaScriptが実行します。


gotoPageFromAA011をコメントアウトし、以下のコードを追加してください。

'Call gotoPageFromAA011() ← コメントアウト

'↓以下追加
Call SubmitFunctionCall(objIE.Document)

Sub Subm...
続きを読む

Q「Microsoft ASP」=「ASP.NET」?

ここのカテゴリの「Microsoft ASP」とは
ASP.NETのことでしょうか?

Aベストアンサー

ASPの人の質問見ると
ASP.NETとプログラムが異なるので
ASP.NET(VB,C#)とASP一緒みたいです。

Q"<%=date変数%>" を "<%=date18(←仮数字)%>"とHTML上で表示させたい

いつもお世話になっております。
現在ASPでプログラムを作成していますが。

<%= %> で囲まれた中に更に変数(<%= %>)を入れることになりました。
どの様にすれば
HTMLソースに value="<%=date変数%>"と表示出来ますか
アドバイスお願いいたします。

以下ソースを記載します。

<!-- カレンダー設置関数 -->
<% Function cal(num)
   Dim a
   Dim str
%>
   <input type="text" name="date<%=num%>" id="date<%=num%>" onClick="cal<%=num%>.write();
<%
   a = 2
   Do Until a > 26
    if a <> num then
%>
     cal<%=a%>.hide();
<%
    Else
    End if
    a = a + 1
   Loop
   Response.Write str
   Response.Write " "" "
%>
   onChange="ca<%=num%>.getFormValue(); cal<%=num%>.hide();" value="<%=date<%=num%>%>"【←問題の箇所です】>
   <br>
   <div id="caldiv<%=num%>"></div>
<%End Function%>

いつもお世話になっております。
現在ASPでプログラムを作成していますが。

<%= %> で囲まれた中に更に変数(<%= %>)を入れることになりました。
どの様にすれば
HTMLソースに value="<%=date変数%>"と表示出来ますか
アドバイスお願いいたします。

以下ソースを記載します。

<!-- カレンダー設置関数 -->
<% Function cal(num)
   Dim a
   Dim str
%>
   <input type="text" name="date<%=num%>" id="date<%=num%>" onClick="cal<%=num%>.write();
<%
   a = 2
   ...続きを読む

Aベストアンサー

実際に試したわけじゃないですけど、普通に &lt;%=date変数%&gt; で
できませんか。
(実体参照)


おすすめ情報