JavaScriptを使ってパラメータの受け渡し方法とは?

このQ&Aのポイント
  • JavaScriptを使用して親ウィンドウから検索用PHPファイルを子ウィンドウで開き、DB検索を行う検索機能を作成しています。しかし、複数のテーブルに対して使おうとするとパラメータを渡すことができず、PHPファイルを作り続ける必要があります。そこで、動的に対象テーブルを変える方法を模索しています。
  • 親ウィンドウと子ウィンドウ間でパラメータを渡す方法を探しています。現在は固定のテーブル名を指定していますが、動的にテーブル名を指定したいと思っています。JQueryの$.post()を使用する方法も検討しましたが、使い方がわからず困っています。
  • JavaScriptを使用して親ウィンドウと子ウィンドウ間でパラメータを渡す方法について教えてください。複数のテーブルに対して使えるようにするためにはどうすればいいでしょうか?JQueryの$.post()を使って解決できるのでしょうか?
回答を見る
  • ベストアンサー

javascriptを使ってパラメータの受け渡し

お世話になります。 親ウィンドウから検索用PHPファイルを子ウィンドウで開き、DB検索を行う検索機能を作っています。 小ウィンドウでの検索結果を function window_close(){ opener.FormA.textA.value = formB.textB.value window.opener.document.getElementById("textA").focus(); window.close() } というスクリプトで親ウィンドウの該当するテキストに渡すようにしています。 この方法でも検索はでき、検索結果を親ウィンドウ側で受け取ることは出来ています。 しかし、この検索画面を複数のテーブルに対して使おうとすると親ウィンドウからパラメータを渡 すことができずテーブルの数だけPHPファイルを作らなくてはなりません。 そこで、動的に対象テーブルを変えることができないか悩んでいます。 イメージとしては、functionの引数でテーブル名を指定し、その値をPHPに渡したいと思っているのですが可能でしょうか。 Jqueryの$.post()が使えるかなとも思ったのですが、正直使い方がよくわかりませんでした。 どなたかよい方法があれば教えてください。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

子ウィンドウはPHPから出力されているのだと理解しましたが、 子ウィンドウを開くときに、親ウィンドウで値を受け取りたい要素は決まっていると思いますので、PHPにクエリなどでその要素のid等を送り、「textA」に当たる部分を書き分けて出力するようにすればよいのではないでしょうか?  var element_id = xxxx,    element = window.opener.document.getElementById[element_id]; とでもしておいて、出力時にxxxxの部分を書換えて、処理はみな同じで   element.value = ○○○;   element.focus(); みたいな感じ。

ia080024
質問者

お礼

回答ありがとうございます。 参考にさせていただきます。

関連するQ&A

  • javascriptにphpの変数を用いる

    JavaScriptでサブウインドウのフォームから親ウインドウのフォームにデータを送るプログラムを書いています。 親ウインドウのページによって処理を変えているのですが、phpの変数を使うと関数自体がエラーになってしまいます。 どう書くのが正しいのでしょうか?教えてください。 プログラムは下記です。 if(page=="0"){ window.opener.document.form_name.input_name.value=input_data; window.close(); } else{   for(i=1; i<6; i++){     var pagename = "page_"+i;     if(page == pagename){ window.opener.document.<?php echo $_GET[form_name]; ?>.<?php echo $_GET[input_name]; ?>.value=input_data; window.close();   } }

  • Firefoxでwindow.openerが動作しない

    あるHTMLから、window.openであらたなウィンドウを開いて、開いたウィンドウにあるリンクをクリックすると、そのリンクの値が元のウィンドウのテキストフォームに入力されるようにしたいのです。 IE6では正常に動いてくれますが、Firefox3で動きません。 新たなウィンドウでは以下の記述をしています。 function junp(value){ window.opener.formtest["test"].value = value; window.close(); } window.openerの行をコメントアウトすると正常にウィンドウを閉じます。 そもそもFirefoxでwindow.openerは使えないのでしょうか??

  • [javaScript] form action

    PHPとjavascriptで検索(別ページ)→検索結果表示(test.php)→指定リンククリック(test.php)→チェックボックスの値を親ウィンドウ(test.php)から子ウィンドウ(aaa.php、bbb.php)へ渡し、更新→親ウィンドウ(test.php)に反映→検索ボタン押下で再検索(test.php)という流れのプログラムを書いています。 親ウィンドウ(test.php)に反映までは実装できましたが、その後検索でsubmitすると、test.phpではなくaaa.phpかbbb.phpへ遷移してしまいます。 色々試してみましたがどうしてもわからず、どなたかご教授いただけませんでしょうか。 よろしくお願い致します。 [親ウィンドウ] function setDown(type) { window.open("", "test") ; if(type == 'aaa') { window.document.fm.action = "aaa.php"; } else if(type == 'bbb') { window.document.fm.action = "bbb.php"; } window.document.fm.target = "test"; window.document.fm.method = "POST"; window.document.fm.submit(); } <form action="index.php" method="post" name="fm"> <a href="javascript:void(0)" onClick="setDown('aaa');"return false>aaa指定</a> <div id="aaaDis"></div> <a href="javascript:void(0)" onClick="setDown('bbb');"return false>bbb指定</a> <div id="bbbDis"></div> <input type="text" name="keyword"> <input type="submit" name="search" value="検索"> </form> [子ウィンドウ aaa.php] if($_REQUEST["mode"] == "set") { foreach($_REQUEST["sample"] as $num => $val) { $addName .= $Func -> GetGenreName($val) . ","; $addNo .= $val. ","; } $addName = rtrim($addName ,","); $addNo = rtrim($addNo ,","); <script type="text/javascript"> <!-- var addName = '<?php echo $addName ; ?>'; var addNo = '<?php echo $addNo ; ?>'; var sampleName = addName.split(","); var sampleNo = addNo.split(","); if(sampleNo) { window.opener.document.getElementById('aaaDis').innerHTML = ""; for (var i in sampleNo){ window.opener.document.getElementById('aaaDis').innerHTML += '<input type="checkbox" name="sample[]" value="'+sampleNo[i]+'" checked>&nbsp;'+sampleName[i]; } } window.close(); // --> </script> } <form action="aaa.php" method="post"> <input type="hidden" name="mode" value="set"> <input type="submit" value="設定"> <input name="sample[]" TYPE="checkbox" VALUE="1">1111 ・ ・ ・ </form>

  • サブウィンドウから親ウィンドウのファンクションを起動

    おせわになっております。 サブウィンドウから親ウィンドウのファンクションを起動する方法について困っています。 親ウィンドウから var subWin = window.open("a.html", "sub") でオープンしたサブウィンドウを閉じる場合に サブウィンドウから親ウィンドウの function sub_close() { subWin.close(); } を呼び出して閉じる処理をしています。 (サブウィンドウでwindow.opener.sub_close()) #これは正常に処理されます。 ここで問題なのですが、サブウィンドウがフレームの場合に、フレームセットされたHTMLから window.opener.sub_close() というような方法では親画面の操作ができないのでしょうか?(できませんでした。) 初歩的な質問で申し訳ないのですが、何かよい方法があれば教えてください。 宜しくお願いします。

  • JavaScriptの配列

    お世話になります。初心者なのでどうすればいいか分かりません。 <? $form = @$_GET["form"]; $name = @$_GET["name"]; function write_color() { RGB = color(); END_OF_HTML; print "window.opener.document.".$form.".".$name.".style.backgroundColor = RGB;"; print "window.opener.document.".$form.".".$name.".value = RGB;"; print <<< END_OF_HTML window.close(); return true; } と現在このように書いているのですが… ここで$nameが配列であった場合、例えばn0[1]といった感じ であった場合どうしても上手くいきません。 単にn0であれば上手くいくのですが。 document.FA1.n0[1].value=RGBとしてみても駄目でした。 何方か教えて頂けませんでしょうか?

  • javascriptのランタイムエラーについて

    サブウィンドウから親ウィンドウのjavascriptのファンクションを呼んでいるのですが、 呼び出し時に、ランタイムエラーが発生します。 申し訳ありませんが回避方法を教えて下さい。 エラー内容 「ランタイムエラーが発生しました。  デバッグしますか?  エラー:オブジェクトでサポートされていないプロパティまたはメソッドです。」 ※下記の(1)の部分でランタイムエラーとなります。 *********************************************************** (1)サブウィンドウの呼び側(ポップアップ画面) strMsg.Append("<script language='JavaScript'>") strMsg.Append("function fncWindowColse11(){") strMsg.Append(" if (parent.opener == null || parent.opener.closed==true) {") strMsg.Append(" alert('画面が閉じられています');") strMsg.Append(" window.close();") strMsg.Append(" return;") strMsg.Append(" }") strMsg.Append(" parent.opener.fncReNew();") ← (1)親画面のファンクション呼び出し strMsg.Append("}") strMsg.Append("fncWindowColse11();") strMsg.Append("window.close();") strMsg.Append("</script>") *********************************************************** (2)親ウィンドウのjavascript function fncReNew(){ ← (2)サブ画面からこのファンクションを読み出している with (Form1){ //画面項目初期化 ------ 略 ------ } } ※ちなみに、parentの記述をtopまたは、windowに変えても駄目でした、、、、 わかりにくいとは思いますが、よろしくお願い致します。

  • JavaScriptのsubmit()がされない

    お世話になります。 現在JAVAで開発を行っています。 原因不明の問題が出たので質問させていただきます。 アップロードを子画面に任せたのもを実装しました。 処理の流れは、 1 親ページから子ページを開く。 2 子ページで画像を選びアップする。 3 画像確認画面が開く。 4 期待する画像の場合は、OKボタンを押す。 5 子画面は閉まる。 4の時に正しくsubmitできていない可能性があります。 確認画面の処理 function hogehoge() { window.opener.form.gazou.src = "hogehoge/test.jpg" //1 window.opener.form.gazou.width = "100"; //2 window.opener.form.gazou.height = "100" //3 document.form.flag.value = "true"; //4 window.document.form.submit(); //5 window.close(); //6 } <input type=button name=button1 value=" OK " onClick="hogehoge();"> 1.2.3.6は実際に画面で挙動が確認できるため問題ないと思います。 4.5に関してはJAVAの方のログで確認できる場合と確認できない場合があります。 submitされているならログにはかれているはずなのですが、 はかれていない場合があり、このとき何らかの理由でsubmitが行われていないのではないかと考えています。 IEのバグでwindow.close時にセッションが切れるというバグがあるのを確認致しましたが この可能性があるかもしれません。 どなたか解る方ご教授お願い致します。

    • ベストアンサー
    • Java
  • PHPとJavaScriptの連携について

    PHPとJavaScriptの連携をしたいと思いましたが、下記が分からなかったので、アドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。 1. 下記の親ウィンドウで子ウィンドウを開く後、テキストエリアに文字を入力し、値をセットボタンを押すと、「親ウィンドウ」の「値が渡せます」には値が渡せますが、「値が渡せません」には値が渡せません。 違いはnameをtext00からdata[text02]に変更したのみとなります。 2. 下記のソースでは、子ウィンドウのテキストエリアに入力した内容をそのまま渡してますが、子ウィンドウのテキストエリアの情報を基に、PHPでデータベースを検索し、ヒットしたものを親ウィンドウに渡したいと思います。 下記のソースを例にすると、「値をセット」ボタンを押した後、テキストエリアの値を子ウィンドウのSELECT文のidに設定し、取得した$tmpの内容を親ウィンドウに渡したいと思います。 なお、記載のSQL文はシンプルですが、実際には複数のフィールドの値を取り、idの値も複数あります(下記のデータベースを例にすると、idに1と2を渡した際、親ウィンドウのテキストエリアに「あいうえお かきくけこ」と表示させ、idの値を隠し項目でもっていたいと思います)。 3. 上記2で親ウィンドウにデータベースの値を渡した後、子ウィンドウを開くクリック時、子ウィンドウのテキストエリアに渡したidの値を表示したいと思います。 【index.html(親ウィンドウ)】 <script type="text/javascript"> <!-- function window_open() { window.open('sub.php',null,'width=640, height=480, scrollbars=yes') }; //--> </script> </head> <body> <form action="index.php" method="post" name="form00" id="form00"> <a onclick="window_open()" href="javascript:void(0)">子ウィンドウを開く</a> <br /> 値が渡せます <input type="text" name="text00" value="" readonly="readonly" /> <br /> 値が渡せません <input type="text" name="data[text02]" value="" readonly="readonly" /> </form> </body> 【sub.php(子ウィンドウ)】 <script type="text/javascript"> <!-- function Set() { window.opener.document.form00.text00.value=document.form01.text01.value; window.opener.document.form00.data[text02].value=document.form01.text01.value; window.close(); } //--> </script> </head> <body> <form action="index.php" method="post" name="form01" id="form01"> <input type="text" name="text01" /> <input type="button" onclick="Set()" value="値をセット" /> </form> <?php /* $link=mysql_connect('localhost', 'データベースユーザ名', 'データベースパスワード名'); mysql_select_db('データベース名', $link); $query=mysql_query("SELECT nm_master FROM master_db WHERE id=2", $link); $tmp=""; while ($row=mysql_fetch_array($query)) { $tmp .= $row["nm_master"]; } echo $tmp; mysql_close($link); */ ?> </body> 【データベース:master_db】 フィールド名:(`id`, `nm_master`) (1, 'あいうえお'), (2, 'かきくけこ'); 以上、よろしくお願いします。

    • ベストアンサー
    • PHP
  • javascriptでのエラーについて

    Windows7+IE8にて以下の処理を行いたいのですが、 ================================================== (1) 親ウィンドウ(oya_window.html)から、【window.open】にて   子ウィンドウ(ko_window.html)を開く (2) 子ウィンドウ(ko_window.html)の【window.opener】にて   親ウィンドウ(oya_window.html)に定義されている   【window.open】を実行する関数[openWindow]を呼び出し、   Yahooページを開く ================================================== (2)の部分で以下のエラーとなり、Yahooページを開く事ができません。 --------------------------------------------------------- このWebページのエラーにより、正しく機能しない場合があります。 --------------------------------------------------------- タグが無効です。 oya_window.html   ライン:10 コード:0      文字:5 --------------------------------------------------------- 同マシン(Windows7)のfirefoxでは問題なく処理が行えるため、IEの 何らかの設定に起因していると思うのですが、IEの何の設定に起因して いるのかわからず、困っています。 何か情報をお持ちの方いらっしゃいましたら、よろしくお願いします。 【その他情報】 ○IEをアドオンなしで起動しても同エラーが発生することから、IEの  アドオンによる影響ではないと思われます。 ○以下の処理は問題なく実行できます。  ▼パターンA  ==================================================  (1) 親ウィンドウ(oya_window2.html)から、【window.open】にて    子ウィンドウ(ko_window2.html)を開く  (2) 子ウィンドウ(ko_window2.html)にて(元々親ウィンドウ    (oya_window.html)に定義していた)【window.open】を実行する    関数[openWindow]を呼び出し、Yahooページを開く  ==================================================  ▼パターンB  ==================================================  (1) 親ウィンドウ(oya_window3.html)から、【window.open】にて    子ウィンドウ(ko_window3.html)を開く  (2) 子ウィンドウ(ko_window3.html)の【window.opener】にて    親ウィンドウ(oya_window.html)に定義されている    【document.bgColor】を実行する関数[changeColor]を呼び出し    親ウィンドウの背景色を灰色に変更する  ================================================== 【ソース】 ▼本来のパターン ==親ウィンドウ(oya_window.html)=================== <HTML> <HEAD> <TITLE>親ウィンドウ </TITLE> <script language="Javascript"> function koopen(){ window.open("ko_window.html","ko_window","status=yes,width=800,height=100"); } function openWindow(){ window.open("http://yahoo.co.jp","",""); } </script> </HEAD> <BODY> <a href="JavaScript:koopen();">子ウインドウを開く</a> </BODY> </HTML> ================================================== ==子ウィンドウ(ko_window.html)=================== <HTML> <HEAD> <TITLE>子ウィンドウ </TITLE> <script language="Javascript"> function helpop(){ window.opener.openWindow(); } </script> </HEAD> <BODY> <a href = "JavaScript:helpop();">Yahooページを開く</a> </BODY> </HTML> ================================================== ▼パターンA ==親ウィンドウ(oya_window2.html)=================== <HTML> <HEAD> <TITLE>親ウィンドウ </TITLE> <script language="Javascript"> function koopen(){ window.open("ko_window2.html","ko_window","status=yes,width=800,height=100"); } </script> </HEAD> <BODY> <a href="JavaScript:koopen();">子ウインドウを開く</a> </BODY> </HTML> ================================================== ==子ウィンドウ(ko_window2.html)=================== <HTML> <HEAD> <TITLE>子ウィンドウ </TITLE> <script language="Javascript"> function helpop(){ window.opener.window.open("http://yahoo.co.jp","",""); } </script> </HEAD> <BODY> <a href = "JavaScript:helpop();">Yahooページを開く</a> </BODY> </HTML> ================================================== ▼パターンB ==親ウィンドウ(oya_window3.html)=================== <HTML> <HEAD> <TITLE>親ウィンドウ </TITLE> <script language="Javascript"> function koopen(){ window.open("ko_window3.html","ko_window","status=yes,width=800,height=100"); } function changeColor(){ document.bgColor="CCCCCC"; } </script> </HEAD> <BODY> <a href="JavaScript:koopen();">子ウインドウを開く</a> </BODY> </HTML> ================================================== ==子ウィンドウ(ko_window3.html)=================== <HTML> <HEAD> <TITLE>子ウィンドウ </TITLE> <script language="Javascript"> function helpop(){ window.opener.changeColor(); } </script> </HEAD> <BODY> <a href = "JavaScript:helpop();">親ウィンドウの色を変える</a> </BODY> </HTML> ==================================================

  • javascriptで別窓で出したページとメインページで同時に動作を行ないたいのですが、教えて下さい。

    javascriptで別窓で出したページを登録ボタンを押すと、そのページが閉じて メインページがボタンを押したことで、切り替わるという動作を行ないたいのですが、 良い方法はありますか?教えてください。 <INPUT type='button' value='登録' onClick=\"opener.location.href='$order'\"> <A href=\"javascript:click_close();\">ウィンドウを閉じる</A> 今は、2つのリンクを貼っています。これを一つにしたいのですが、ご伝授下さい。 function click_close () { window.close(); }

専門家に質問してみよう