「一気に最後まで読んだ」本、教えて下さい!

フレームの一部からフレームの一部への値の受け渡しができなくて悩んでいます。

・やりたいこと
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の問題だと思い、こちらで質問させていただく次第です。ご存知の方がいらっしゃいましたら、どうぞよろしくお願いいたします。

A 回答 (2件)

フレーム内部を呼び出すというのは、framesetを記述しているファイルを


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

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>

お礼日時:2005/05/23 09:16

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>
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございました。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さんのご回答も大変参考になりました。お時間を割いていただきましてどうもありがとうございました。

お礼日時:2005/05/23 09:39

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