FRAME間でデータのやり取りをするには

[上に] [前に] [次に]
ど・どいつ 1999/12/08(水) 20:38:15
別のASPでフレームを2つ切って、遷移先を
hj7.aspとhj8.aspとします。
hj8.aspにある実行ボタンを押すと、hj7.aspにページ数が
渡って、ページを計算したのち該当データを
表示するようなプログラムを作りたいのですが、
どうしたら良いでしょう?
つまりページング処理したいんですけど・・・
(ちなみに以下は、ページ数等の計算やDB読み込み
は省略してあります。)

**************hj7.asp************
<HTML>
<HEAD>
<TITLE>あはは</TITLE>
</HEAD>
<BODY BGCOLOR="lavender">
<CENTER>
<FORM ACTION="/is_asp/hj7.asp" NAME="fhyo" METHOD="POST">
<TABLE BORDER='1' WIDTH='173%'>
<TR>
<TH>おっと1</TH>
<TH>おっと2</TH>
<TH>おっと3</TH>
</TR>
<%
  Response.Write "nowpage=" & Request.Form("nowpage")

  MAXDT=8
  np=1

  lpcnt1=1
  Do until lpcnt1>MAXDT
      Response.Write("<TR>")

      For lpcnt2=2 to 17 step 1
          'テーブルアレンジ
          (中略)
          'データレングスの設定
          (中略)
          '入力エリア作成
          (中略)
      Next
      Response.Write("</TR>")
    lpcnt1=lpcnt1+1
  Loop
%>
</TABLE>
</FORM>
</CENTER>
</BODY>
</HTML>
***********hj8.asp************
<HTML>
<HEAD>
<TITLE>うふふ</TITLE>
</HEAD>
<BODY BGCOLOR="lavender">
<CENTER>
<BR>
<TABLE><TR>
<%
  wnp=cint(Request.QueryString("nowpage"))-1
  Response.Write("<FORM ACTION='/is_asp/hj7.asp' TARGET='gamen3'>")
  Response.Write("<TD><INPUT TYPE='hidden' NAME='nowpage' VALUE='" & cstr(wnp) & "'>")
  Response.Write("<INPUT TYPE='submit' NAME='bbtn' VALUE='前ページ'></TD>")
  Response.Write("</FORM>")
  wnp=cint(Request.QueryString("nowpage"))+1
  Response.Write("<FORM ACTION='/is_asp/hj7.asp' TARGET='gamen3'>")
  Response.Write("<TD><INPUT TYPE='hidden' NAME='nowpage' VALUE='" & cstr(wnp) & "'>")
  Response.Write("<INPUT TYPE='hidden' NAME='nowpage' VALUE='" & cstr(wnp) & "'>")
  Response.Write("<INPUT TYPE='submit' NAME='abtn' VALUE='次ページ'></TD>")
  Response.Write("</FORM>")
%>
</TR></TABLE>
</CENTER>
</BODY>
</HTML>

hj8.aspで隠しエリアにページ数を設定して、hj7.aspに渡そうとしたのですが、
うまく行きません。
誰かたすけて〜。

無責任官庁 1999/12/09(木) 10:08:41
パっと見でだけですけど・・・
GETとPOST、Request.QueryString と Request.Form が
混じってますね。

hj7.asp は、自分自身を呼ぶのにPOST使ってて、
Request.Form で受信してます。
hj8.asp は、hj7.asp を呼ぶのにGET使ってます。
これは Request.QueryString で受け取るんですよね?

ってな感じなので、どっちかに統一したらよいのでは?

#VBSはまだまだ初心者なので、はずしてるかも・・・

ど・どいつ 1999/12/09(木) 10:51:28
レスありがとうございます。(誰も見てくれないかと思った。)
両方混在している理由なんですけど、
**********st2.asp**********
<HTML>
<HEAD>
<TITLE>えへへ</TITLE>
</HEAD>
<FRAMESET ROWS="10%,*" BORDER="0">
<FRAME SRC="/is_asp/hj1.asp" NAME="gamen1" MARGINHEIGHT="0" NORESIZE>
<FRAMESET ROWS="25%,*">
<FRAME SRC="/is_asp/hj6.asp" NAME="gamen2" MARGINHEIGHT="0">
<FRAMESET ROWS="80%,*">
<FRAME SRC="/is_asp/hj7.asp" NAME="gamen3" MARGINHEIGHT="0" FRAMEBORDER="0" FRAMESPACING="0">
<FRAME SRC="/is_asp/hj8.asp?nowpage=1" NAME="gamen4" MARGINHEIGHT="0">
</FRAMESET>
</FRAMESET>
</FRAMESET>
</HTML>
なんてことを、本当は一番最初にしているからです。
FRAMEを分けたと同時に引数を渡しているので、
一番最初のみはRequest.QueryStringで取って、(しょうがないので)
あとの、処理ではRequest.Formで値のやり取りをしようと
考えたんですけど、hj8.aspにRequest.Formで取得する部分を
書かなかったので、よく分からなかったですよね。
(すみません。)
Request.QueryStringの部分を
if len(cint(Request.QueryString("nowpage")))<>0 then
  wnp=cint(Request.QueryString("nowpage"))
else
  wnp=cint(Request.Form("nowpage"))
  end if

if wnp>1 then
  なんたらかんたら
end if
という判定文を付けるのが本当です。

無責任官庁 1999/12/09(木) 11:35:58
いや・・・そうではなく・・・

>Response.Write("<FORM ACTION='/is_asp/hj7.asp' TARGET='gamen3'>")

って書いてますよね?ってことは、
hj8.asp は、hj7.asp に、GETで送信してるんですよね?
(METHOD 省略はGETになる・・・と思った)
hj7.asp は、Request.Form で受け取る文しか書いてないんで、
それじゃ受け取れないかと・・・(^_^;)

ど・どいつ 1999/12/09(木) 11:45:21
あいやぁ。
失礼しました。
そういうことですね。(よく見てなかった。)
METHOD="POST"すれば、Request.Formで見れますか。
基本的には、Request.Formを使いたいので。

ど・どいつ 1999/12/10(金) 11:16:25
[[解決]]
無責任官庁さんの指摘事項と、とほほさんのJavaScriptランゲージを
参考に解決しました。
(現在動いてます。)以下、参考までに。

***********hj7.asp*************
<HTML>
<HEAD>
<TITLE>るるる</TITLE>
</HEAD>
<BODY BGCOLOR="lavender">
<CENTER>
<FORM NAME="fhyo" METHOD="POST">
<TABLE BORDER='1' WIDTH='173%'>
<TR>
<TH>あはは</TH>
<TH>いひひ</TH>
<TH>うふふ</TH>
</TR>
<%
  Response.Write "nowpageS=" & Request.QueryString("nowpage")

以下同文
%>
</TABLE>
</FORM>
</CENTER>
</BODY>
</HTML>
**********hj8.asp***********
<HTML>
<HEAD>
<TITLE>集中決済</TITLE>
<SCRIPT><!--
      function jump(np) {
        var st1
        var st2

        st1="/is_asp/hj7.asp?nowpage=" + np + "";
        st2="/is_asp/hj8.asp?nowpage=" + np + "";

        window.top.frames[2].document.fhyo.target="gamen3";
        window.top.frames[2].location.href=st1;
        window.top.frames[3].document.fbgm.target="gamen4";
        window.top.frames[3].location.href=st2;
        return false;
      }
      // --></SCRIPT>
</HEAD>
<BODY BGCOLOR="lavender">
<CENTER>
<BR>
<FORM NAME="fbgm">
<TABLE><TR>
<%
  wnp=cint(Request.QueryString("nowpage"))

  if wnp>1 then
    wnp=cint(Request.QueryString("nowpage"))-1
    Response.Write("<FORM METHOD='POST'>")
    Response.Write("<TD><INPUT TYPE='submit' NAME='bbtn' VALUE='前ページ' onClick='return jump(" & cstr(wnp) & ");'></TD>")
    Response.Write("</FORM>")
  end if

  if wnp<10 then
    wnp=cint(Request.QueryString("nowpage"))+1
    Response.Write("<FORM METHOD='POST'>")
    Response.Write("<TD><INPUT TYPE='submit' NAME='abtn' VALUE='次ページ' onClick='return jump(" & cstr(wnp) & ");'></TD>")
    Response.Write("</FORM>")
  end if
%>
</TR></TABLE>
</FORM>
</CENTER>
</BODY>
</HTML>

[上に] [前に] [次に]