• ベストアンサー

フレームの一部からフレームの一部への値の受け渡し

フレームの一部からフレームの一部への値の受け渡しができなくて悩んでいます。 ・やりたいこと menufrm.html(フレーム)のfrm3(フレーム名)にあたるlist.phpから、 entryframe.html(フレーム)のframe3(フレーム名)にあたるentry.phpに、リンク(a href)で値を渡したい。 list.phpの社員リスト(DBから抽出)の名前部分がリンクになっており、クリックすると社員コードをentry.phpに渡しつつ画面遷移させたいと考えています。 今は以下のように対処していますが、これでは値はentry.phpに渡るものの、フレームが表示されずいきなりentry.phpに遷移してしまいます。 <JavaScript部分> function go_entry(){ // window.open("entryframe.html","_top"); // document.list_form.target = "frm3"; document.list_form.action ="entry.php"; // document.list_form.submit(); } <HTMLのリンク部分> <a href="entry.php?syain_cd=<?= $row["syain_cd"] ?>" target="_top" onclick="go_entry()"><?= $row["syain_name"] ?></a> 使用言語はPHPですが、どちらかというとPHPよりもHTMLかJavaScriptの問題だと思い、こちらで質問させていただく次第です。ご存知の方がいらっしゃいましたら、どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

フレーム内部を呼び出すというのは、framesetを記述しているファイルを 呼び出してそれから、内部のファイルを新たにブラウザが呼び出すので、 1度では出来ないと思います。 entryframe.htmlもphp出力にして、一端このphpファイルでデータを受けて 以下のようなframeタグを出力してみてはいかがでしょう? <frame src="entry.php?syain_cd=<?= $_GET["syain_cd"] ?>" >

chizudara
質問者

お礼

hrm_mmmさんのやり方で試してみたところ、できました!list.phpのソースは以下の通りです。entry.phpのソースはhrm_mmmさんのコードを参考にいたしました。本当にどうもありがとうございました。 function go_entry(){ window.open("entryframe.php","_top"); //document.list_form.target = "frm3"; //document.list_form.action ="entry.php"; document.list_form.submit(); } <a href="entryframe.php?syain_cd=<?= $row["syain_cd"] ?>" target="_top" onclick="go_entry()"><?= $row["syain_name"] ?></a>

その他の回答 (1)

  • osumitan
  • ベストアンサー率33% (102/307)
回答No.2

frame3側がentry.phpにパラメータ付きで飛ばせばいいわけなので、 やり方として思いつくのは、以下の2つでしょうか。 ・frm3からframe3をlocationで飛ばす方法 [frm3] function go_entry() {   parent.frame3.location.replace("entry.php?syain_cd=xxx&syain_name=xxx"); } ・frm3からframe3にsubmitさせる方法 [frm3] function go_entry() {   var f = parent.frame3.formxxx;   f.syain_cd = syain_cd;   f.syain_name = syain_name;   f.submit(); } [frame3] <form name="formxxx" action="entry.php">   <hidden name="syain_cd" value="">   <hidden name="syain_name" value=""> </form>

chizudara
質問者

お礼

ご丁寧にありがとうございました。1番目の方法はJavaScriptの中で、PHPがDBから抽出してきた値を使わなくてはならないため、 function go_entry() { parent.frame3.location.replace("entry.php?syain_cd=<?= $row['syain_cd'] ?>&syain_name=<?= $row['syain_name'] ?>"); } のように書かなくてはいけないのですが(多分)、そうすると値が取れませんでした。 2番目の方法でも試してみたのですが、値は渡るものの画面はフレーム表示ができませんでした。 他の方のご回答で解決いたしましたが、osumitanさんのご回答も大変参考になりました。お時間を割いていただきましてどうもありがとうございました。

関連するQ&A

  • frame間の値の受け渡し方法

    環境はxp、apache2、php5、Postgresql8.2です。 1台のPCをサーバ&クライアントにしています。 ただ今PHPとPostgresqlの勉強をしています。 --------------------------- frameで左右に分かれています。 「左がメニュー画面」 「右がデータを表示する画面」 --- <frame name="hidari" src="aa.php"> <frame name="migi" src="ee.php"> メニュー用のPHPに --------------------------- aa.php(左のメニュー画面) 「number」というテキストボックスに入力して、 「検索」をクリックすると、 右の画面にデータが表示されます。 <FORM name="Form1" METHOD=post target="migi"> number<INPUT TYPE=TEXT NAME=number SIZE=5> <a href="./ee.php?func=ads" target="migi"><span style="color:#DB7093">検索</style></a> --------------------------- ee.php(左のデータ画面) テキストボックス「number」の値を受け取るために echo $_POST['number']; 「number」の値が表示されません。 どのようにすれば受け取れますか?

    • ベストアンサー
    • PHP
  • 値の受け渡し(少し複雑)

    失礼いたします。 質問させてください。 サーブレットから値(id[i])を受け取り画面に表示させ、そのリンクをクリックした時サーブレットのservに値(id[i]とi)を受け渡したいです。その際JavascriptとしてvalueDeliveryを使いました。 (全体をiが0からリスト数まででループさせている。) <form action="serv" name=frm method=post> <a href="JavaScript:valueDelivery('<%=id[i]%>')" onclick="document.frm.id.value='<%=id[i]%>';"><%=id[i]%></a><br> <input type="hidden" name="id" value="<%=id[i]%>"><input type="hidden" name="i" value="<%=i%>"><input type="hidden" name="action" value="addAnkenn"> <script> function valueDelivery(js_id) { if(js_id == "" || js_id == null) { alert(js_id); } else { alert(js_id); document.frm.id.value = js_id; document.frm.submit(); } } </script> ところが、アラートではちゃんとidが表示されるものの送った先のサーブレットではid[i]の値がすべてid[0]の値になっています。iはいつも0ですし。。。これはサブミットした時またiを0から数え始めているということでしょうか? よくわかりません、分かる方、よろしくお願いします。m(__)m

    • ベストアンサー
    • Java
  • 左右に分かれているフレーム間での値の受け渡し

    こんにちは、はじめまして。 左右に分かれているフレーム(右にあるフレームを押下すると、左側のフォーム内の処理が走り、その結果(フラグなど)をサーバに送りたいです。 ソースは以下のようになっています。Javascriptで値の受け渡しをしたいのですが、どのようにすればsubmitができるかわかりません。どなたがご存知の方、よろしくお願いします。 ↓以下ソース↓ ~右側~ <form action="menu.php" method="post" name="form_menu"> <input type="button" value="test" onClick="push();">      省略 </form> <script language="javascript"> function push() {  --ここが分かりません-- ここで左側のフォームに送るフラグ値をセットして  それを左側のフォームにsubmitしたいです。 } </script> ~左側~ <form action="input.php" method="post" name="form_input">      省略 </form> ~フレーム~ <FRAMESET cols="80%,20%" frameborder="0"> <FRAME SRC="input.php" name="frame_input"> <FRAME SRC="menu.php" name="frame_menu"> </FRAMESET>

    • ベストアンサー
    • PHP
  • フレームでの「戻る」について

    1.「ページA」から「ページB」へ遷移します。 2.「ページB」は「B1」と「B2」というフレームで構成されています。 3.「B1」のリンクをクリックすると「B1」内で内容が切り替わります。 4.ある特定のリンクの場合は「B2」に内容が表示されます。 上記のような遷移のあとで、「B1」のみ「戻る」の操作をしたいのですが、JavaScriptやブラウザの戻るボタンでは、「B2」や「B1」を遷移した順にしか戻る事ができません。 History.back()といった方法ではなく、遷移元へのリンクを直接書いたりといったことも考えたのですが、値を保持する必要も出てくるため、できれば単純な戻るの操作を行いたいです。 「B1」に記述したJavaScriptは以下の通りです。 「<A href="JavaScript:self.history.back();" target="_self"></A>」 「B1」のみ、つまり特定のフレーム内でのみ戻るの操作をするにはどのようにすればよろしいでしょうか。

  • ページ間の値の受け渡しについて

    緊急でPHPを用いて開発しなければならず、値の受渡し方法が調べても 結果がうまく出来ないために教えて下さい。 説明がうまくできないので、ソースの一部を下記に記載しております。 【keikaku.php】 <?php $link = DB接続 $query = "SELECT (1) , (2) , (3) FROM KEIKAKU WHERE 営業所= '東京'"; $res_result = mysql_query($query,$link); echo ("<form action='keikaku_input.php' method='POST'>"); while($row = mysql_fetch_array($res_result)){  echo ("<table border=1>");  echo ("<tr>");  echo ("<td><input type='radio' name='name' value=''></td>");  echo ("<td>");  echo $row['(1)'];  echo ("</td><td>");  echo $row['(2)'];  echo ("</td><td>");  echo $row['(3)'];  echo ("</td>");  echo ("</tr>"); } echo ("<input type='submit' value='次へ'>"); echo ("</form>"); ?> というSQLで一覧を表示させて、対象行のラジオボタンが選択されると (1)と(2)の値を使い、【keikaku_input.php】で更に別のSQLを実行後に 結果を表示させる事を行ないたいのです。 【keikaku.php】→【keikaku_input.php】へ(1)と(2)の値を渡したい場合 はどのようにすれば良いかご教授願えませんでしょうか?

    • ベストアンサー
    • PHP
  • 別ウィンドウへのsubmitの挙動がおかしいです

    はじめまして。 ページ内の押下したボタン/リンクに応じて、それぞれ別の新しいウィンドウにフォームの値を渡して処理を行うプログラムを作成しています。 リンク1押下→ウィンドウAを開く→アドレス1に遷移 リンク2押下→ウィンドウBを開く→アドレス2に遷移 ボタン3押下→自画面でアドレス3に遷移 フォームは共通で、JavaScript内でウィンドウ及びアクションの指定を行っています。 しかし、実際に動かしてみると、以下の問題が起こりました。 ・ウィンドウを開いた後、いつまでも遷移しない(する時もある) ・ウィンドウを開いた後、意図しないアドレスに遷移することがある  具体的には、新規ウィンドウで、現在開いているアドレスへの遷移 ・フォームの値が送信されないことがある(する時もある) いろいろ調べてみたのですが、原因がわかりません。 お力を貸していただけないでしょうか。 文末に抜粋したソースを掲載します。 ブラウザはIE7、関連あるかは分かりませんが、PHPとsmartyを使っています。 宜しくお願いいたします。 【JavaScript部分】 function action1(){ document.form.action = "http://www.yahoo.co.jp" document.form.target = "_self"; document.form.submit(); } function action2(){ window.open("", 'win2', 'width=400, height=300'); document.form.action = "http://www.google.co.jp" document.form.target = "win2"; document.form.submit(); } function action3(){ window.open("", 'win3', 'width=400, height=300'); document.form.action = "http://www.msn.co.jp" document.form.target = "win3"; document.form.submit(); } 【HTML部分】 <form name="form" method="post" action=""> <input type="text" name="text1" value=""> <a href="javascript:action2();">リンク1</a> <a href="javascript:action3();">リンク2</a> <input type="button" value="ボタン3" onClick="action1()"> </form>

  • 値の受け渡しについて

    JavaScriptを使用しa.htmlからb.htmlへ 値の受け渡しについて分らない事があります。 やりたいことはa.html内にある <a href="b.html">あああ</a>の「あああ」の値を b.html内にある<INPUT>に入れたいのです。 現在記述しているコードを下記記しますので 何方かご教授お願いします。 ■a.html <html> <a href="b.html" onclick="this.href=this.href+'?'+encodeURIComponent(this.innerHTML)">あああ</a> </html> ■b.html <html> <script type="text/javascript"> query = decodeURIComponent( location.search.slice(1,1000) ); document.getElementById('in_name').value = query; </script> <form> <INPUT type="text" id="in_name" name="in_name" value=""> </form> </html>

  • Null またはオブジェクトではありませんのエラー

    HTML部で <FORM NAME="frm1" METHOD="post" ACTION="xxx.html">  <INPUT TYPE="hidden" NAME="txt1"> </FORM> javascriptで document.frm1.txt1.value = "hoge"; document.frm1.submit(); のように記述しています。 FireFoxブラウザでは期待通りの動きをするのですが、 IE6では「document.frm1.txt1はNullまたはオブジェクトではありません」 とエラーが出てしまい、画面遷移しません。 因みにページはフレームを利用しており、 フォームや画面遷移はメインフレームでしか使っていないので、 フレーム名も特につけておりませんし、 targetの記述も使用しておりません。 そこらへんに原因があるのでしょうか。 それにしてもFireFoxでは可、IEではエラー というのも解せないです。 どなたか分かる方いらっしゃいましたら ご教示願います。

  • 複数のフレームに値を送るには

     フレームを使って分けた複数のフレームに値を送るにはどうすればいいでしょうか? <script type="text/javascript"> <!-- function func() { top.topFrame.location.href = "theme.php?ThemeID=$ThemeID"; top.leftFrame.location.href = "discussion.php?ThemeID=$ThemeID"; top.mainFrame.location.href = "infomation.php"; return false; } // --> </script> <?php <a href="#" onclick="return func()">$ThemeTitle</a> ?> では変数ではなく"$ThemeID"の文字列でしか行きません またこれから実装しますがPostで複数のフレームに値を送る方法もよければ教えてください よろしくお願いします

    • ベストアンサー
    • PHP
  • フレーム内に画像を表示する際、画像をフレームサイズに合わせたい。

    Webページで、フレームを使ってるんですが、フレーム内に表示する画像のサイズがマチマチで(画像の元サイズがとても大きかったりして)見栄えが良くありません。 main.htmlというソースを置いて、そこからタイトル表示用HTMLと画像リスト用HTMLをフレーム内に表示。 画像リスト用HTMLからAタグで画像表示用フレームに画像を表示するよう記述。 単にこれだけだと、ブラウザごとに画像サイズがフレーム内に収まるよう調整されたり、されなかったりなんですよ。 どうにか、強制的にフレーム内に表示させるようにする方法を教えてください。 ------------------------------------------------- main.htmlの抜粋↓ ------------------------------------------------- <frameset rows="50,*"> <form name="frm1"> <frame src="title.html" name="ue"> <frameset cols="187,*"> <frame src="list.html" name="hidari"> <frame src="./img/1.jpg" name="migi"> </frameset> </form> </frameset> ------------------------------------------------- list.htmlの抜粋↓ ------------------------------------------------- <a href="img/2.jpg" target="migi">19</a>

専門家に質問してみよう