• ベストアンサー

サブウィンドウからメインウィンドウにデータを送信する方法

宜しくお願いします。 メインウィンドウからリンクを貼り、そこをクリックしてサブウィンドウを出します。そのサブウィンドウに入力フォームを付けて、必要な情報を入力してもらい、送信ボタンを押すと、POSTで送信されて、元のメインウィンドウで送信内容が確認出来る様にしたいのですが、やり方が良くわかりません。 とある本を見て、『opener.closed』というのを使えば出来るかと思い試したのですが、URLをメインのウィンドウに送る事は出来ても、POSTのデータを送信する方法までわかりませんでした。 どなたかご教授の程、宜しくお願い致します。

  • nikuq
  • お礼率75% (477/631)

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

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

以下のような感じでどうでしょう? (1)メインウィンドウに名前を付けておく。 <html> ~ ~ <script type="text/javascript"> <!-- window.name="hoge" //--> </script> </head> (2)サブウィンドウで送信するときにtarget(=メインウィンドウのname)を指定する。 (送信したらサブウィンドウを閉じる) <form action="~" method="post" target="hoge" onsubmit="window.close()" >

nikuq
質問者

お礼

ご返信遅くなりました。 ありがとうございます。早速試したのですが、メインウィンドウ自体を更新してしまうので、ちょっとうまくいかなかったです。。。 ありがとうございましたm(__)m

その他の回答 (3)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.4

何度も失礼します。 #3のご要望を読むと、私の回答は#2のようになるんですが・・・ #2のお礼欄ではメインウインドウ自体が更新されて困るという・・・ > データをPOSTで送信し、反映させている状態を作りたい というのであればウインドウ自体を更新するのが一般的だと思うのです。 メインウィンドウがフレーム構成になっているとか、インラインフレームを使っているとかで、一部フレームだけを更新したいのでしょうか?(そうならばサブウィンドのformのtagetでフレーム名を指定します。) メインウインドウ全体を更新せずに変更を反映させるというのであれば、その手段がわからないと私には回答できません。

nikuq
質問者

お礼

ご返信遅くなりましたm(__)m おっしゃる通り、私が支離滅裂な事を言っておりますね(-_-;)ページの更新もせずにPOSTのデータを反映させるなど出来る訳がありませんね。今一度教えて頂きました情報で作ってみます。 ありがとうございましたーm(__)m

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.3

#2です。勘違いしていたようです。 ちょっとわからない部分があるので確認させてください。 以下のような流れでしょうか? メインウインドウでリンクをクリック →サブウインドウをwindow.open サブウインドウの入力フォームへデータを入力。 サブウインドウの送信ボタンクリック →メインウインドウのフォーム(?)にサブウインドウで入力したデータを複写。 →CGI(php)にデータを送信(POST) サブウインドウ上にはCGI(php)の処理結果を表示。

nikuq
質問者

補足

ありがとうございます。 >メインウインドウでリンクをクリック >→サブウインドウをwindow.open >サブウインドウの入力フォームへデータを入力。 >サブウインドウの送信ボタンクリック この時点で、メインウィンドウのPHPにサブウィンドウで入力したデータをPOSTで送信し、反映させている状態を作りたいと思っております。 サブウィンドウからデータを送った時点でメインのPHP上のプログラムで何かしらのアクションをおこし、その結果をメインウィンドウで表示するといった流れです。 何卒、ご教授の程、宜しくお願い致します。

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

サブウィンドウ側のボタン押下でいきなり送信するのでなく、 いったんJavascriptのfunctionを呼んでやって、 その中で、メインウィンドウ(opener)にデータを渡す処理を行い、 その後、POSTでsubmitするというのではどうでしょうか?

nikuq
質問者

補足

ありがとうございます。 すみません。読んでも具体的なイメージができないです(T_T)サブウィンドウ側でfunctionでopenerの設定をしてみたんですが、読んでる本のやり方だと、URLしか送れないみたいで、肝心のデータが全部飛んじゃうんです。。。笑われるかもしれませんが、やってみたソースを明記させて頂きます。メインページからは、window.openでサブウィンドウを開いています。 サブウィンドウのJavaScript <script language="javascript"> <!-- function back_window(WO) { if(opener.closed) { NewWin=window.open("","MWindow"); window.opener.document.test.submit(); } else { opener.location.href=WO } } //--> </script> 送信ボタンの設定 <input type="button" value="送信" onClick="javascript:back_window('test.php')"> ・・・と、この様に書いているんですが、ボタンを押すと、メインページが反応するんですが、データが送られないのです(T_T) どうすればよいのやら・・・何かヒント頂けると非常に助かります!お願いしますm(__)m

関連するQ&A

  • サブウィンドウで送信ボタンを押すとメインウィンドウに結果を表示

    こんにちわ, 今HTMLの学習をしているのですが,タイトルどおり,サブウィンドウで送信した値をメインウィンドウに反映したいのですが,どうすればいいでしょうか。 ちなみにメインウィンドウはフレームが2つあって, その1つ(hogeflame)のhoge2.phpにその値を送りたいのですが, サブウィンドウで <head> <script Language="JavaScript"><!--   function setURL()   {    window.opener.hogeflame.location.href = "hoge2.php";   } // --></script> </head> <?php  echo '<form action="javaScript:setURL()" method="POST">';  echo "<input type=\"hidden\" name=\"hoge3\" value=\"hoge3\">"; : (後略) としたのですが,うまくいきません。 おそらくformのactionにsetURLという関数を持ってくるのが間違っていると思うのですが,どうすればいいでしょうか。 ちなみにIEではこれを単にtarget=hogeflameにすると,うまくいくのですが,Netscape系ではうまくいかないので,javascriptを使用するようにしました。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • サブウィンドウを閉じたときに親ウィンドウのリンク先

    サブウィンドウを閉じたときに親ウィンドウのリンク先 サブウィンドウを閉じたときに親ウィンドウを別URLに 飛ばすにはどうしたらよいですか? ちなみにサブウィンドウはボタンを押したらウィンドウが 閉じるという動きです。 下記のタグで実行できるのですが、 macのIE5.0で動きません。 IE5.0で動くようにしたいのですが・・・・ 下記がタグになります。 ご教授お願いします。 ======サブウインドウタグ======= <script type="text/JavaScript"> function jump_and_close() {  opener.location.href = "別URL";  window.close(); } </script> ======親ウィンドウへのリンク======= <input type="button" value="ボタン" onClick="jump_and_close()">

  • window.openでform内のデータを送信する方法

    window.openでform内のデータを送信する方法 こんばんは。 メインウインドウからサブウィンドウを、画面サイズを指定してオープンしたいのですが その場合、メインウインドウのフォームの内容をサブウィンドウに引き継がせる事は 可能でしょうか?? 色々試したのですが、うまくいきません(>_<) どなたかわかる方教えてください。 よろしくお願いしますm(_ _)m

  • サブウィンドウと、親ウィンドウについて

    これは、データベース絡みでの質問になると思いますがよろしくお願いします。 ここの前の質問でも同じようなものがあり、流用できたらと試してみましたがうまくいきません。それは、以下の手順によってデータを操作しようと考えているのですが・・・ (1)親ウィンドウにサブウィンドウを呼び出すボタンを設置する。 (2)呼び出されたサブウィンドウにデータを入力すると親ウィンドウのデータも一緒にデータベースに登録される。 と、いう手順でしたいと考えており、サブウィンドウ側に、 function copy(){ document.form1.text1.value = opener.parent.left.document.form2.text1.value; } とし、サブウィンドウに親ウィンドウからデータを持ってくるために <input type="hidden" name="text1" onChange="copy()"> という隠しフィールドを設け、親からデータを格納させています。 また、上にある、「left」は親をフレームわけしているのでフレーム名です。(持ってくるデータは、form1にあり、そこにボタンを設置しています)説明不足でしたら補足いたしますので、よろしくお願いします。考え方でも結構です。

  • サブウインドウから親ウインドウに入力して送信する方法

    親ウインドウのコードはまったくいじらずに、$_POST[name]だけを使って、サブウインドウの入力フォームから親ウインドウのtextareaに入力し、かつ親ウインドウの送信<submit>ボタンを押す方法はありませんか?

    • 締切済み
    • PHP
  • 親→子1→子2→親のデータ渡し

    1.親ウィンドウからサブウィンドウ1を開く。 2.サブウィンドウ1でsubmitボタンを押すと値が  window.openerで親に渡り更にサブウィドウ2が開く。 ここまでは、出来るのですが 3.サブウィンドウ2でsubmitボタンを押して値を親ウィンドウに渡すにはどうしたらよいでしょうか? ここでwindow.openerを使うとサブウィンドウ1が親ウィンドウと判断してしまい上手くいきません。 上手い方法があれば教えて下さい。

  • サブウィンドウの親の位置

    こんにちわ。 メインウィンドウから、サブウィンドウを開くようになっています。 メインウィンドウが縦に長く(文章量が多い)、下の方のリンクでサブウィンドウを開いたときに、メインウィンドウの画面がページの上の方に移ってしまいます。 クリックした場所を維持したいのですが、調べてみたのですが、やり方がわかりません。 すみませんが、よろしくお願いします。 <script> <!-- function MM_openBrWindow(theURL,winName,features) { window.open(theURL,winName,features); } //--> </script> ▼メイン・リンク部分 <a href="#" onClick="MM_openBrWindow('info.html#1','info','width=380,height=500,scrollbars=yes,resizable=yes')">※1</a>

  • サブウィンドウから親ウィンドウの操作の仕方

    質問です。教えてください。 サブウィンドウズを閉じたときに親ウィンドウを別URLに 飛ばすにはどうしたらよいですか? ちなみにサブウィンドウはボタンを押したらウィンドウが閉じるという動きをやってみたいです。 よろしければこちらも教えていただきたいです。 ボタンはロールオーバさせてます。 よろしくお願いします。

  • 【FireFox】サブウィンドウ表示とテキストボックス値

    メインのウィンドウにテキストボックスとボタンがあり、 ボタンをクリックするとjavascriptによりサブウィンドウ が開くHTMLがあります。 しかし、FireFoxに限り、ボタンを押してサブウィンドウ を開くとメインのHTMLのテキストボックスに入力していた 値が消えてしまいます。 ================ main.html ===================== <html> <head> <script Language="JavaScript"><!-- function openSubWin(){ window.open("sub.html","window","width=300,height=300"); } // --></script> </head> <body> <form action="#" name="myform"> <input type="text" name="no"> <button id="button1" onclick="openSubWin();" >サブウィンドウ</button> </form> </body> </html> ================== サブウィンドウ ================ <html> <body> サブウィンドウ </body> </html> IEでは問題ありませんでした。 何か解決方法はありますでしょうか? 宜しくお願いします。

    • ベストアンサー
    • HTML
  • PHPのみでjavascriptと同じ動きができないでしょうか。

    PHPのみでjavascriptと同じ動きができないでしょうか。 やりたいことは以下の内容です。 1.メインページ(A) のリンクから サブウィンドウ(B) を別窓で開く。 2.サブウィンドウ(B) で、フォーム処理(修正登録)する。 3.サブウィンドウ(B) を閉じたら、メインページ(A) を更新する。 javascriptだと閉じるボタンに window.opener.location.reload(); とかでできると思うのですが これをphpのみで実装したいのです。 phpのみでjavascriptと同じことはできないでしょうか。

    • ベストアンサー
    • PHP

専門家に質問してみよう