- ベストアンサー
フレームの一部からフレームの一部への値の受け渡し
フレームの一部からフレームの一部への値の受け渡しができなくて悩んでいます。 ・やりたいこと 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の問題だと思い、こちらで質問させていただく次第です。ご存知の方がいらっしゃいましたら、どうぞよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
フレーム内部を呼び出すというのは、framesetを記述しているファイルを 呼び出してそれから、内部のファイルを新たにブラウザが呼び出すので、 1度では出来ないと思います。 entryframe.htmlもphp出力にして、一端このphpファイルでデータを受けて 以下のようなframeタグを出力してみてはいかがでしょう? <frame src="entry.php?syain_cd=<?= $_GET["syain_cd"] ?>" >
その他の回答 (1)
- osumitan
- ベストアンサー率33% (102/307)
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>
お礼
ご丁寧にありがとうございました。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さんのご回答も大変参考になりました。お時間を割いていただきましてどうもありがとうございました。
お礼
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>