AIと戦って、あなたの人生のリスク診断 >>

フォームのPOSTデータをサブウィンドウに渡したいです。

<form action="sample.html" method="post">
<input type="checkbox" name="test[]" value="0">0
<input type="checkbox" name="test[]" value="1">1
<input type="checkbox" name="test[]" value="2">2
<input type="checkbox" name="test[]" value="3">3
<input type="checkbox" name="test[]" value="4">4
</form>

上記のフォームの値を、サブミットボタンを押したときにサブウィンドウをひらき、そのサブウィンドウに渡したいのですが、いまいち上手くいきません。
window.openでサブウィンドウを開いてもデータが受け渡せずにいます。

このような場合、どうしたら値を渡せるのでしょうか。
理想はPOSTで渡したいのですが、引数で渡す方法でもかまいません。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

親子関係があるのなら、子ウィンドウから親のフォームを読みに行けば、データを渡す必要がなくなりますが?



子ウィンドウのサンプル(要素によって属性は変わるので適宜)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>test</title>
<meta http-equiv="Content-Script-Type" content="text/javascript">
</head>
<body>
<script type="text/javascript">
<!--
(function() {
var win, elm, e, i=0, m = "";
if (win = window.opener) {
elm = win.document.forms[0].elements;
while (e = elm[i++]) m += e.name + " : " + e.value + " / " + e.checked + "<br>";
document.write(m);
}
})();
//-->
</script>
</body>
</html>
    • good
    • 0
この回答へのお礼

ありがとうございまあした。
無事解決しました。

お礼日時:2010/12/18 20:56

<form action="sample.html" method="post" target="newWin">


とします。(targetには適当なwindow名をかきます)
    • good
    • 0
この回答へのお礼

ありがとうございます。
こんな簡単な方法でもできるのですね。

お礼日時:2010/12/18 20:57

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q子→親ウインドウへデータを受け渡し、子ウィンドウを閉じる。

このような処理はできないでしょうか?

子ウィンドウはコード番号の検索用。該当のコードのリンクをクリックすると、そのコード番号を親ウィンドウのテキストボックスへ落とし込む。そのタイミングで、子ウィンドウは閉じる。
子→親ウインドウへのデータの受け渡しと、子ウィンドウのクローズを同時に行うようなイメージです。
よろしくお願いします。

Aベストアンサー

こんにちは

【親ウィンドウ】
<form action="xxx.php" method="POST" name="myForm">
顧客コード
<input type="text" name="kokyaku_cd" size="10">
<a href="javascript:void(0)" onClick="window.open('search.html','search','menubar=no,height=400,width=300');">検索</a>
</form>

【子ウィンドウ】
<script language="javascript"><!--
function ich(n) {
window.opener.document.myForm.kokyaku_cd.value=n;
window.close();
}
//--></script>

<table>
<tr>
<th>顧客コード</th>
<th>顧客名称</th>
</tr>
<tr>
<td><a href="javascript:ich('ABC商店')">0001</a></td>
<td>ABC商店</td>
</tr>
<tr>
<td><a href="javascript:ich('DEF商店')">0002</a></td>
<td>DEF商店</td>
</tr>
</table>

もしくはNo.1様の言うようにidを設定して
【親画面】
<input type="text" name="kokyaku_cd" size="10" id="kokyaku_cd">

【子画面 function内】
window.opener.document.getElementById("kokyaku_cd").value=n;

でできると思います

こんにちは

【親ウィンドウ】
<form action="xxx.php" method="POST" name="myForm">
顧客コード
<input type="text" name="kokyaku_cd" size="10">
<a href="javascript:void(0)" onClick="window.open('search.html','search','menubar=no,height=400,width=300');">検索</a>
</form>

【子ウィンドウ】
<script language="javascript"><!--
function ich(n) {
window.opener.document.myForm.kokyaku_cd.value=n;
window.close();
}
//--></script>

<table>
<tr>
<th>顧客コード</th>
<t...続きを読む

Qwindow.openで値の渡し方を教えてください。

画像をクリックするとwindow.htmlで新しいウインドウが開き、「IMG/AAA.jpeg」という値をwindow.htmlに渡して、画像を表示したいのですが、どのようにすればよいでしょうか。

画像をクリック(photoOpnに値が渡される)→関数photoOpn実行(window.htmlに値が渡される)→window.html表示(値を受け取り画像を表示)といった具合にしたいのですが・・・。

<html>
<head>
<script type="text/javascript"><!--
photoOpn(value){
window.open("window.html");
}
//--></script>
</head>

<body>
<a href="javascript:photoOpn('IMG/AAA.jpeg')"><img src="IMG/AAA.jpeg"></a>
</body>

ここまではやってみたのですが、window.htmlにどのように値を渡せばいいのでしょうか。

Aベストアンサー

>>1
> 結構複雑になってしまいますね。Javascriptを勉強してまもないので
> 難しく感じてしまいます(笑)
> 図々しいとは思いますが、少しながら関数等のscriptの説明をして
> 頂けませんでしょうか。

すみませんでした。
自分でやるときもなかなかコメントつける癖がなくて暫く経ったら
自分の書いたコードさえ解読できなくなることが多々あったりします。
それでも、コメント書くのが面倒だったりそもそも適切なコメントが
思い浮かばずつい、省略してしまうことが多くて自分でも困っていたり
します。(^_^;

やっていること自体は決して複雑ではないはずなんですけど、確かに
難しいかも知れませんね。

// URL エンコード
url = encodeURIComponent(url);

これはURLエンコードしています。
クエリに非ASCII文字列などを含めるときはURLエンコードします。
スラッシュはディレクトリ区切りとしても使用されているのでURLと
しては使用可能ですが念のためにURLエンコードしています。
因みにJavaScriptにはURLエンコードする関数がいくつかありますが
スラッシュをエンコードできるのは上記の関数のみのようです。
また、日本語などの文字列が含まれる場合、元の文字列が何であっても
強制的にUTF-8としてURLエンコードしてしまいますのでご注意ください。

window.open('window.html?url=' + url);

これはそのまま、URLにクエリを追加して渡しているだけです。

var query = location.search.substr(1).split('&');

ここが一番分かりにくい可能性がありますが

location.search

はURLのクエリの部分(?含む)を文字列オブジェクトとして返します。

.substr(1)

は1文字目(?を飛ばす)移行を取得しています。

.split('&')

は '&' を区切りとして分割し配列として返します。
(念のため複数のクエリが渡されたときを考慮して)

var base = './';

これは画像ファイルのURLパスです。
相対パスと絶対パスどちらも指定できます。
最後は必ずスラッシュで終わってください。

if(query != '') {

これはクエリがから文字列でなかったらという条件文です。
この条件に一致したらこれ以降のブロックを実行します。

var req = new Array();
for(var i = 0; i < query.length; i++) {
var key = query[i].split('=');
req[decodeURIComponent(key[0])] = decodeURIComponent(key[1]);
}

ここは、各クエリを連想配列に代入しています。
ここはPerlCGIなどで使用されている部分をそのままJavaScriptに
移植してみました。
代入するときにキーと値の両方をURLデコードしています。

var img = document.createElement('img');
img.setAttribute('src', base + req['url']);
document.getElementById('img').appendChild(img);

ここは img エレメントを作成し、 'img' のIDをもつエレメントの
子要素として作成した img エレメントを追加しています。

あと、うっかり忘れていて説明している段階で気がついたのですが
上記のコードの前に req['url'] があるかどうか調べないとエラーが
でる可能性が...。

説明が下手なので却って分かりにくいかも知れませんがご了承ください。
かくコード部分の詳細はネットで調べた方が早くてもっと分かりやすく
説明している所があると思いますよ。
(そもそも上記はほとんどネットから集めた情報を組み合わせただけ
ですので)

>>1
> 結構複雑になってしまいますね。Javascriptを勉強してまもないので
> 難しく感じてしまいます(笑)
> 図々しいとは思いますが、少しながら関数等のscriptの説明をして
> 頂けませんでしょうか。

すみませんでした。
自分でやるときもなかなかコメントつける癖がなくて暫く経ったら
自分の書いたコードさえ解読できなくなることが多々あったりします。
それでも、コメント書くのが面倒だったりそもそも適切なコメントが
思い浮かばずつい、省略してしまうことが多くて自分でも困っていたり
しま...続きを読む

Qサブウィンドウに値を渡して、CGIにPOSTしたい

お世話になります。

javascript初心者です。

題名のようにPOSTした値をポップアップで確認して、CGIに渡そうとしています。

親ウィンドウのoya.htmは、
<html>
<head><title>submitの確認をポップアップで確認</title>

<script type="text/javascript">
<!--

function fnWinOpen() {

window.open("pop_post.htm", "win", "width=150,height=20");
}
//-->
</script>

</head>
<body>

<form name="Form_name">
<input type="text" name="Data" />
<input type="button" value="送信" onClick="fnWinOpen()">
</form>

</body>
</html>
でして、

サブウィンドウのpop_post.htmは、
<html>
<head><title>submitの確認をポップアップで確認</title>
<script type="text/javascript">
<!--
function fnStart() {
document.getElementById("SubData").value = window.opener.Form_name.Data.value;

}

function job( url ) {
後はこの関数を完成さればと考えている
}
//-->
</script>
</head>

<body onload="fnStart()">

<form method="post" >
<input type="text" id="SubData" />

<input type="button" name="sub" value="送信job" onClick="job('thanks.cgi')">
</form>
</body>
</html>

とやっています。
サブウィンドウに値を表示させることはできました。
後は、サブウィンドウの方の job関数で、submitするにはどうすればようのでしょう?

最後に値が渡されるCGI、thanks.cgiでは、そのデータを登録させ、「ありがとうございました」を表示させるものです。

また、そもそもこの方向でうまくできますか?

よろしくお願いします。

お世話になります。

javascript初心者です。

題名のようにPOSTした値をポップアップで確認して、CGIに渡そうとしています。

親ウィンドウのoya.htmは、
<html>
<head><title>submitの確認をポップアップで確認</title>

<script type="text/javascript">
<!--

function fnWinOpen() {

window.open("pop_post.htm", "win", "width=150,height=20");
}
//-->
</script>

</head>
<body>

<form name="Form_name">
<input type="text" name="Data" />
<input type="button" value="送...続きを読む

Aベストアンサー

親ウィンドウのformでsubmit(ANo.3の方の回答に書かれている方法)が一番わかりやすいと思います。
まずはANo.1のお礼のスクリプトが理解してみて、
何が悪いのかを確認して、ANo.3の方のやり方を試してみるといいのではないでしょうか。

サブウィンドウが動いている間、親ウィンドウが操作できないようにする処理もあったほうがよさそうですね。
(必須ではないと思いますが)
今までやったことがある方法ですが、
方法1:親ウィンドウにフォーカスが移動したら、強制的にサブウィンドウを閉じる
方法2:showModalDialogを使ってサブウィンドウを開く
ダイアログが開いている間は親画面を操作することができなくなりますが、
ちょっと処理が特殊になるので、難しいと思うならお勧めしません。

Qtableタグとformタグの組み合わせ

tableタグとformタグの組み合わせでどのように記述すれば、構文上正しいのでしょうか?
私は下のパターンで書いておりますが、間違いでしたら早めに改めたいので
お聞きしました。

<table>
<form>
<input type="hidden" name="a" value="1">
<tr>
<td>
<input type="text" name="b" value="">
</td>
</tr>
<tr>
<td>
<input type="submit" value="OK" value="">
</td>
</tr>
</fomr>
</table>

Aベストアンサー

恐らく、<form>タグを入れると1行分の隙間ができるのでそのように記述しているのでしょう。私も4年ほど前に何かの雑誌でそのように記述しましょう、を確かに見ました。W3Cの理論を無視すれば別に表示するのだから構わないとも思います。
しかし、私の場合、今は、前者様の回答のように<table>の外に記述します。そして、スタイルシートで
<form style="margin:0px;">
とすれば、隙間が無くなります。

Qopenerは使えないのでしょうか?

以下の操作をした際に親ウインドウの情報を取得できず困っています。
1.親ウインドウでサブウインドウを開く
2.サブウインドウのボタン押下で親ウインドウのlocationを変更する
3.サブウインドウから「window.opener」を使おうとすると、object自体は存在するがnameやdocumentが取得できない

サブウインドウが開いている間に親ウインドウを変更するとopenerは情報を失うのでしょうか?

やりたいことはサブウインドウから親ウインドウのアドレスを変更し、hiddenに値をセットしたいのですが、対応策はありますでしょうか?

よろしくお願いします。

Aベストアンサー

隠しフレームを用意します。
親ウインドウを開く際、隠しフレームのjavascriptから開くようにします。
子ウインドウも開く際、隠しフレームのjavascriptから開くようにします。
子から親ウインドウを更新する場合は、隠しフレームのjavascriptで更新をかけます。
また、hiddenに値を入れる際にも隠しフレームのjavascriptで、、。
こんな感じでやれば、出来ると思います。

ちなみに隠しフレームって、0ピクセルのフレームの事です。

Qsyntax error, unexpected '}' というエラーの対処法

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" maxlength="3" />
<input type="sbumit" value=回答" />
</form>
<hr />
<?php
session_start();
if(is_null($_SESSION['answer'])){
mt_stand(microtime()*1000000);
$_SESSION['answer']=mt_rand(1,100);
$_SESSION['game_cnt']=0;
}
if($_POST['answer']!=""){
$_SESSION['game_cnt']++;
if($_session['answer']==$_POST['answer']){
print("おめでとうございます".
$_SESSION['game_cnt']."回で正解しました!");
session_destroy();
}else{
if($_SESSION['answer']>$_POST['answer']){
print("もう少し大きいです。");
}else
print("もう少し小さいです。");
}
}
}
?>
</body>
</html>
それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" max...続きを読む

Aベストアンサー

print("もう少し大きいです。");
}else
print("もう少し小さいです。");
のelseの後に{がないようですが、大丈夫でしょうか?

Qウィンドウの2重起動を防止したい

こんにちわ!

javaScriptからwindow.open()でサブウィンドウを
開いている状態で、再度リンクをクリックした場合は
なにもしないようにしたいのですが、現在は、しかたなく
開かれているサブウィンドウに再度同じページを表示
するようにしています。

もし、現在サブウィンドウが開かれている場合は
親ウィンドウのリンクをクリックしても無効とする
方法があれば教えて下さい.

Aベストアンサー

window.open() の戻値を使えば可能です。

# スクリプト部
var newwin;
function openWindow(a) {
  if (!newwin || newwin.closed) {
    newwin = window.open(a.href, a.target, "~");
  else
    newwin.focus();
  return false;
}

# タグ部
<a href="xxx.html" target="newwin" onClick="return openWindow(this)">~</a>

最初は newwin に値が入っていないので、!newwin が成り立ち、if 文の中の window.open() が実行されます。

2回目以降は !newwin は常に偽となり、2個目の条件 newwin.closed が評価されます。
.closed は、ウィンドウが開いていれば false となり、閉じられていれば true となります。
つまり、開いていれば else 側が実行され、閉じられていたら再度 open するわけです。

window.open() の戻値を使えば可能です。

# スクリプト部
var newwin;
function openWindow(a) {
  if (!newwin || newwin.closed) {
    newwin = window.open(a.href, a.target, "~");
  else
    newwin.focus();
  return false;
}

# タグ部
<a href="xxx.html" target="newwin" onClick="return openWindow(this)">~</a>

最初は newwin に値が入っていないので、!newwin が成り立ち、if 文の中の window.open() が実行されます。

2回目以降は !newwin は常に偽となり...続きを読む

Q1つのformで複数のactionを実行できますか?

フォーム内に商品の購入ボタンがあります。同じフォーム内に商品名でグーグルのサイト内を検索させるボタンを設置し、横に並べることは可能ですか?
フォームの入れ子はよくないようなので、検索をJava scriptでできればよいのですが・・・
スタイルシートではデザイン上無理でした。

<form id="fm" name="fm" action="URL" method="POST">
<input type="hidden" name="shouhinmei" value="商品名">
<input type="hidden" name="kakaku" value="500">
<input type="image" src="kounyuu.gif value="購入">

<form method=get action="http://www.google.co.jp/search">
<input type=hidden class="q" name=q value="商品名"><input type=hidden name=ie value=UTF-8><input type=hidden name=oe value=UTF-8><input type=hidden name=hl value="ja"><input name=btnG type="image" src="検索.gif value="検索"><input type=hidden name=sitesearch value="サイトのURL"></form>
</form>
</form>

+----+  +----+
|購入|  |検索|
+----+  +----+

フォーム内に商品の購入ボタンがあります。同じフォーム内に商品名でグーグルのサイト内を検索させるボタンを設置し、横に並べることは可能ですか?
フォームの入れ子はよくないようなので、検索をJava scriptでできればよいのですが・・・
スタイルシートではデザイン上無理でした。

<form id="fm" name="fm" action="URL" method="POST">
<input type="hidden" name="shouhinmei" value="商品名">
<input type="hidden" name="kakaku" value="500">
<input type="image" src="kounyuu.gif value="購入">...続きを読む

Aベストアンサー

では、以下のような感じで。
なるべく多くのブラウザで動くように書いたつもりですが検証は充分行ってください。

<html>
<head>
<title></title>
<script type="text/javascript">
<!--
function searchGoogle(q) {
document.forms['searchForm'].elements['q'].value=q;
document.forms['searchForm'].submit();
return false;
}
//-->
</script>

</head>
<body>

<form action="URL">
~~
<input type="image" src="kounyuu.gif value="購入">
<a href="http://www.google.co.jp/" onclick="return searchGoogle('商品名')"><img src="検索.gif" border=0></a>
</form>

<form action="http://www.google.co.jp/search" id="searchForm" style="display:none;">
<input type=hidden name="q">
<input type=hidden name=ie value="UTF-8">
<input type=hidden name=oe value="UTF-8">
<input type=hidden name=hl value="ja">
<input type=hidden name=sitesearch value="サイトのURL">
</form>

</body>
</html>

では、以下のような感じで。
なるべく多くのブラウザで動くように書いたつもりですが検証は充分行ってください。

<html>
<head>
<title></title>
<script type="text/javascript">
<!--
function searchGoogle(q) {
document.forms['searchForm'].elements['q'].value=q;
document.forms['searchForm'].submit();
return false;
}
//-->
</script>

</head>
<body>

<form action="URL">
~~
<input type="image" src="kounyuu.gif value="購入">
<a href="http://www.google.co.jp/" onc...続きを読む

Q子画面を自動で閉じた後、親画面を再描画するJavaScriptが・・・・

IEだと動くんですけど、Netscapeだと動かないんです。なんかsecurityErrorが出まして・・・。子画面を閉じるまでは動いてるんですが、親の再描画の部分でエラーが出てるようです。どこが原因かお分かりになる方いらっしゃいますか?よろしくお願いします。


<%//処理を何秒後に行うか 時間をset%>
function setTimer(){
timer1=setTimeout("clo()",3000);
timer2=setTimeout("location()",3000);
}

<%//windowをclose%>
function clo(){
window.close();
}

<%//親画面を再描画する%>
function location(){
var url='<html:rewrite page="/hogehoge/hoge.do" />';
window.opener.location.href = url+'?member_id='+変数;
}

Aベストアンサー

あれ?
でも一字一句同じurlを読み込めば再検索されると思いましたが・・・
↑これは余計でした。
えー、親画面の再描画を先にすると動かないそうですね。
でしたら、親画面のほうで子画面を閉じて渡された引数をurlに組み込んで再描画するようにしましょう。
子画面の処理は子画面で、親画面の処理は親画面で行うわけです。
まず、親画面となるhtmlに以下を足します。
<script type="text/javascript">
<!--
function redraw(num){
location.href='<html:rewrite page="/hogehoge/hoge.do" />?member_id='+num;
}

function location(number){
timer2=setTimeout("redraw("+number+")",3000);
}
//-->
</script>
そして、あなたの子画面のsetTimer()を
setTimer(){
timer1=setTimeout("clo()",3000);
opener.location(変数);
}
にします。
これで、子画面は自分を閉じるためだけにタイマーを持っているので、タイムラグが生じても問題なく動作するはずです。

あれ?
でも一字一句同じurlを読み込めば再検索されると思いましたが・・・
↑これは余計でした。
えー、親画面の再描画を先にすると動かないそうですね。
でしたら、親画面のほうで子画面を閉じて渡された引数をurlに組み込んで再描画するようにしましょう。
子画面の処理は子画面で、親画面の処理は親画面で行うわけです。
まず、親画面となるhtmlに以下を足します。
<script type="text/javascript">
<!--
function redraw(num){
location.href='<html:rewrite page="/hogehoge/hoge.do" />?member_id...続きを読む

Q配列をPOSTで受けとる

タイトルのまんまですが
配列をformで送って
それをPOSTで受け取りたいのですが
うまくいきません

具体的に言うと
<?php
print"<form method=POST action=action.php>";

for($i=0; $i<$n; $i++){
   print"<input type=text name=foo[$i]>";
}
print"<input type=hidden name=n value=$n>";
print"<input type=submit value=go>";
print"<form>";
?>


///////////以下action.php//////////////////
<?php
$n = $_POST["n"];
for($j=0; $j<$n; $j++){
   $foo[$j] = $_POST["foo[$j]"];
   print"$foo[$j]";
}
?>


こんな感じのことがしたいのですが
うまくいきません
どうもPOSTされてないみたいでfoo[$j]はnullです
凡ミスな気がしなくもないんですが...プログラム初心者なんで↓↓
教えてください
よろしくお願いします

タイトルのまんまですが
配列をformで送って
それをPOSTで受け取りたいのですが
うまくいきません

具体的に言うと
<?php
print"<form method=POST action=action.php>";

for($i=0; $i<$n; $i++){
   print"<input type=text name=foo[$i]>";
}
print"<input type=hidden name=n value=$n>";
print"<input type=submit value=go>";
print"<form>";
?>


///////////以下action.php//////////////////
<?php
$n = $_POST["n"];
for($j=0; $j<$n; $j++){
   $foo[$j] = $_POST["foo[$j...続きを読む

Aベストアンサー

atsuGTさんこんにちは。


受け取り側は

$foo = $_POST["foo"];

とするだけで$fooに送信された配列が格納されます。


$_POST["foo[添え字]"] ではなく、
$_POST["foo"][添え字] となります。


人気Q&Aランキング