こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

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

投稿日時 - 2005-05-21 10:44:36

QNo.1400610

困ってます

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

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

投稿日時 - 2005-05-21 19:20:10

お礼

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:43

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.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>

投稿日時 - 2005-05-23 06:42:53

お礼

ご丁寧にありがとうございました。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:57

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-