- ベストアンサー
サブウィンドウからメインウィンドウにデータを送信する方法
宜しくお願いします。 メインウィンドウからリンクを貼り、そこをクリックしてサブウィンドウを出します。そのサブウィンドウに入力フォームを付けて、必要な情報を入力してもらい、送信ボタンを押すと、POSTで送信されて、元のメインウィンドウで送信内容が確認出来る様にしたいのですが、やり方が良くわかりません。 とある本を見て、『opener.closed』というのを使えば出来るかと思い試したのですが、URLをメインのウィンドウに送る事は出来ても、POSTのデータを送信する方法までわかりませんでした。 どなたかご教授の程、宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
以下のような感じでどうでしょう? (1)メインウィンドウに名前を付けておく。 <html> ~ ~ <script type="text/javascript"> <!-- window.name="hoge" //--> </script> </head> (2)サブウィンドウで送信するときにtarget(=メインウィンドウのname)を指定する。 (送信したらサブウィンドウを閉じる) <form action="~" method="post" target="hoge" onsubmit="window.close()" >
その他の回答 (3)
- steel_gray
- ベストアンサー率66% (1052/1578)
何度も失礼します。 #3のご要望を読むと、私の回答は#2のようになるんですが・・・ #2のお礼欄ではメインウインドウ自体が更新されて困るという・・・ > データをPOSTで送信し、反映させている状態を作りたい というのであればウインドウ自体を更新するのが一般的だと思うのです。 メインウィンドウがフレーム構成になっているとか、インラインフレームを使っているとかで、一部フレームだけを更新したいのでしょうか?(そうならばサブウィンドのformのtagetでフレーム名を指定します。) メインウインドウ全体を更新せずに変更を反映させるというのであれば、その手段がわからないと私には回答できません。
お礼
ご返信遅くなりましたm(__)m おっしゃる通り、私が支離滅裂な事を言っておりますね(-_-;)ページの更新もせずにPOSTのデータを反映させるなど出来る訳がありませんね。今一度教えて頂きました情報で作ってみます。 ありがとうございましたーm(__)m
- steel_gray
- ベストアンサー率66% (1052/1578)
#2です。勘違いしていたようです。 ちょっとわからない部分があるので確認させてください。 以下のような流れでしょうか? メインウインドウでリンクをクリック →サブウインドウをwindow.open サブウインドウの入力フォームへデータを入力。 サブウインドウの送信ボタンクリック →メインウインドウのフォーム(?)にサブウインドウで入力したデータを複写。 →CGI(php)にデータを送信(POST) サブウインドウ上にはCGI(php)の処理結果を表示。
補足
ありがとうございます。 >メインウインドウでリンクをクリック >→サブウインドウをwindow.open >サブウインドウの入力フォームへデータを入力。 >サブウインドウの送信ボタンクリック この時点で、メインウィンドウのPHPにサブウィンドウで入力したデータをPOSTで送信し、反映させている状態を作りたいと思っております。 サブウィンドウからデータを送った時点でメインのPHP上のプログラムで何かしらのアクションをおこし、その結果をメインウィンドウで表示するといった流れです。 何卒、ご教授の程、宜しくお願い致します。
- osumitan
- ベストアンサー率33% (102/307)
サブウィンドウ側のボタン押下でいきなり送信するのでなく、 いったんJavascriptのfunctionを呼んでやって、 その中で、メインウィンドウ(opener)にデータを渡す処理を行い、 その後、POSTでsubmitするというのではどうでしょうか?
補足
ありがとうございます。 すみません。読んでも具体的なイメージができないです(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
お礼
ご返信遅くなりました。 ありがとうございます。早速試したのですが、メインウィンドウ自体を更新してしまうので、ちょっとうまくいかなかったです。。。 ありがとうございましたm(__)m