• ベストアンサー

CGIでJavaScript

今自作の管理ページを作っているのですが、ある部分で詰まってしまってしまいました(^^; プルダウンメニューを付け加えるコードがありますよね? <SELECT NAME=menu> <OPTION VALUE=$i>$name</OPTION> </SELECT> ↑これです プルダウンメニューから項目を選ぶ時、今どの項目が選択されているかをプログラム側で判断することはできないでしょうか? 今のところVALUE値に0~Nの値を設定して、QUERY_STRINGから値を取り出し、そこから判定させているのですが、これだと一々メッセージとして飛ばしてやらないと判定できませんよね?(できれば更新しないで反映させたいのです) そこで、項目を選択した瞬間に今どの項目が選択されているのか(selectedIndexを使うのでしょうか?)をプログラム側に渡したいのです。(項目番号だけでいいので) JavaScriptの中で$aなど変数を設定してもどうもうまく代入してくれませんでした。 その時のコードは、 function change(){ $a = form.select.selectedIndex; } です。 それともう一つ、CGIの場合、リアルタイムに処理をすることはできるのでしょうか? 掲示板など、投稿ボタンを押すとページが更新されて、メッセージが追加されます。 上記のプルダウンメニューを選択した瞬間にいろんな処理(JavaScriptではなくPerlで)をさせることは可能でしょうか? かなりわかりにくい文章になってしまいましたが、 どなたか、わかる方レスお願いしますm(__)m

  • Perl
  • 回答数7
  • ありがとう数3

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

  • ベストアンサー
  • wolv
  • ベストアンサー率37% (376/1001)
回答No.5

セレクトボックスが... ひとつ変えるとほかの内容がかわる, ていうのをやりたいんですか? JavaScriptでできてますよ. 教えて!gooで,新規質問をするページが まさにそれをやってます.view sourceでソースも見えます.

blackcat3
質問者

補足

まさしくこれがやりたかったんです^^ これはOPTIONのVALUE値に識別値を割り振っておき、IFの分岐で文字を表示させてるんですよね?(JavaScriptはまだ勉強中なので) とりあえずこれでSelectBoxの切り替えはなんとかできそうです wolvさん、本当にありがとうございます^^

その他の回答 (6)

noname#2494
noname#2494
回答No.7

他の方の回答で解決している様にも見えるので、もしそうでしたらそうおっしゃってくださいね。 >このaはPerlで使うことができるんでしょうか? >私はaの部分を$aとして、その後Perlのほうで使いたかったんです(^^; でも、サーバとは更新したくないんですよね? Perlに渡すと言うことはサーバと交信することになってしまいますよ。 まず考えなければならないのは、サーバと交信が必要かどうかです。サーバと交信が必要かどうかは、この更新するSelectBoxの内容がサーバに問い合わせないと手に入れられるか入れられないか。です。 その為に何を表示するのか聞いてみたのですが、よく判らないので、サーバとの更新が必要な場合と必要でない場合を考えてみましょう。 サーバとの更新が必要なければ、JavaScriptだけで、表示を更新させれば、懸念されている様な画面自体を更新する必要が無くなります。 例えば、先程wolvさんが教えてくださった様に、教えて!gooの質問のカテゴリは、三階層になっていて、そのカテゴリが数えられるくらいならば、ページを読み込む時に全てのカテゴリを最初に用意しておけば、Perlと再び更新する必要がありません。 その為一瞬でリストが更新されますね。 とは言ってもwolvさんが仰有っている様にソースを見れば書き方が分かってしまうので、そちらを参考にやってみて下さい。 なにかまた分からないことがあれば御相談下さい。

blackcat3
質問者

お礼

Perlに渡すと言うことはサーバと交信することになってしまいますよ。 なるほど、言われてみればそうですね まだまだサンプルをいじっている程度なので、その辺は全然知らなかったです(^^; 確かにリストが膨大になると更新速度など、色々問題がありそうですが、私の考えている方法はJavaScriptだけで何とかなる範囲だと思います ソースを見ながら頑張ってみます^^ (ソース保存したんですがなぜか文字化けが・・・文字コードが違うのかな) Hawk-Wさん、Wolvさん、本当にありがとうございました またわからないことがあれば質問させて頂きますね それでは・・・

noname#2494
noname#2494
回答No.6

どこかのページに項目を選択してもページが更新されず、ちゃんと反映されているCGIがありました。 私はそれをめざしてます(^^; それは、最初の質問に書いている更新しないで掲示板に更新しているのですか? もっと具体的にどういう物を表示して、どういう時にどういう動作を行いたいのか教えていただけるとなにか分かるかも知れません。今の話だけ、結構抽象的なので… >もしくは下に補足した項目番号を変数に代入したいんです。 function change(){ a = form.select.selectedIndex; } ↑これは変数に代入していますけど(??

blackcat3
質問者

補足

Hawk-Wさん、レスありがとうございますm(__)m >それは、最初の質問に書いている更新しないで掲示板に更新しているのですか? これは、正確には掲示板などの投稿ではなく、下で書きましたSelectBoxがコロコロ切り替わるというものを言いたかったんです 説明不足でした、すみませんm(__)m function change(){ a = form.select.selectedIndex; } 確かに代入してますが・・・ このaはPerlで使うことができるんでしょうか? 変数には$を付けないとただの「a」という文字列として判断されてしまいますよね。 私はaの部分を$aとして、その後Perlのほうで使いたかったんです(^^;

  • wolv
  • ベストアンサー率37% (376/1001)
回答No.4

*.cgi をURLとして指定されることで起動され, その出力がHTTPにしたがっているものとして返されるのが, CGI -- common gateway interface -- だったはずです.たぶん,ページ中のJavaScriptとサーバーのCGIプログラムとの通信はできません.

blackcat3
質問者

補足

そうですか・・・ 確かにJavaScriptで通信はできませんから・・・ 私が見たCGIはもっと別の方法だったのかなぁ Select Boxが4つほどあって、最初のBoxを選択すると、それに合わせて他のBoxのリスト項目が変化していました。 ページは更新してませんでしたから、きっとJavaScriptなんだろうなぁって思ってましたが・・・ これはあきらめるしかなさそうですね>< もう少しだけまってからこの質問を締め切ろうと思います wolvさん、態々レスありがとうございますm(__)m

  • wolv
  • ベストアンサー率37% (376/1001)
回答No.3

<form name=f1> <SELECT NAME=menu onChange="change()"> <OPTION VALUE=a>atai1</OPTION> <OPTION VALUE=b>atai2</OPTION> <OPTION VALUE=c>atai3</OPTION> </SELECT> </form> <script> function change(){ window.status = document.f1.menu.selectedIndex; } </script> ------------------------------------------------------------ このコードで select box の値を変えると,status 欄にoption のインデックスが表示されます.ひとつめが0, ふたつめが1, ...みたいですね. ------------------------------------------------------------ > それともう一つ、CGIの場合、リアルタイムに処理をすることはできるのでしょうか? こっちは誰かにおまかせします.w

blackcat3
質問者

補足

wolvさん、二回目のレスありがとうございます^^ そうですね、ステータスバーに表示させることはできるんですが、そこに表示した番号をプログラムのほうで使いたいんです(^^; やっぱりCGIでは何かを更新する場合、もう一度自分、もしくは別のCGIを呼ぶしか方法はないんでしょうか? となるとJavaScriptしかなさそうですが・・・

noname#2494
noname#2494
回答No.2

function change(){ $a = form.select.selectedIndex; } selectedIndexでOKのはずです。 しかし、JavaScriptは、変数に$文字を使いません。 その為 function change(){ a = form.select.selectedIndex; } で、OKのはずです。 >上記のプルダウンメニューを選択した瞬間にいろんな処理(JavaScriptではなくPerlで)をさせることは可能でしょうか? 勿論可能ですよ。しかし、JavaScriptは使わなくては鳴りません。 具体的にはこんな感じです。 <SELECT NAME=menu onChange="navigate('./target.cgi?param=' + this.selectedIndex);"> <OPTION VALUE=$i>$name</OPTION> </SELECT> こうすると、menuプルダウンの項目を変更すれば、その瞬間に自分のブラウザをtarget.cgiに変えられます。その後のparamには、選択したindexが入ります。(でも未テスト)

blackcat3
質問者

補足

Hawk-Wさん、レスありがとうございますm(__)m <SELECT NAME=menu onChange="navigate('./target.cgi?param=' + this.selectedIndex);"> <OPTION VALUE=$i>$name</OPTION> </SELECT> ↑これやってみました ですが、これだとtarget.cgiを呼ぶことになってしまって、やはりページが更新されてしまいます。 この方法じゃないとやっぱり駄目なんでしょうか? どこかのページに項目を選択してもページが更新されず、ちゃんと反映されているCGIがありました。 私はそれをめざしてます(^^; もしくは下に補足した項目番号を変数に代入したいんです。

  • wolv
  • ベストアンサー率37% (376/1001)
回答No.1

JavaScriptの変数名には,頭の$はいらなかったはずですよ.

blackcat3
質問者

補足

wolvさん、レスありがとうございますm(__)m そうですね、そこの所を補足しておくの忘れてました>< 私のやりたい事は function change(){ $a = form.select.selectedIndex; } &aには項目を選択した瞬間$aに項目番号が入りますよね? それを取り出したいだけなんです $なしでするとaはJavaScriptでのみ使うことのできる変数ってことになりますよね? (もしかしてPerlでも使えますか?)

関連するQ&A

  • Javascript

    Javascript に関する質問です。 HTML にプルダウンメニューを設置し各ページに飛ばす際に、 別ウィンドウを開かせるようにするにはどうすればよいのでしょうか? 下記は Dreamweaver MX がはき出した Javascript です。 当方 Javascript に関してはほとんど素人です。どこに何を、どう書き換えてやればいいのか、どうか教えてください。 【Javascript】 <script language="JavaScript" type="text/JavaScript"> function MM_jumpMenu(targ,selObj,restore){ //v3.0 eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'"); if (restore) selObj.selectedIndex=0; } </script> 【HTML側】 <select onchange="MM_jumpMenu('parent',this,0)" name=menu1> <option selected>-- 選択して下さい --</option> <option value="../1.html">home1</option> <option value="../2.html">home2</option> <option value="../3.html">home3</option> <option value="../4.html">home4</option> </select>

  • javascriptを活用して、プルダウンメニューにて選択、登録された

    javascriptを活用して、プルダウンメニューにて選択、登録された値は上部に表示及びhiddenに値を代入したいのですが、いまいちわかりません。 例 下記で選択された場合 選択された値をここに表示+<input type="hidden" value="ここに選択された値"> <SELECT name="name"> <OPTION value="tarou">太郎</OPTION> <OPTION value="hanako">花子</OPTION> <OPTION value="saburou">三郎</OPTION> </SELECT> <A href="" onclick="">決定</A> しかも、選択した後にさらに選択して決定を押下することで 選択された値をつみかせねて表示したいのですが、 どなたかご教授して頂けないでしょうか?

  • プルダウンメニューで、選択項目をリンク先でも維持したい。

    javascriptを使用したプルダウンメニューについて質問です。 <form name="form1"> <select name="select" onChange="location=select.options[select.selectedIndex].value"> <option value="a.html#01">A01</option> <option value="a.html#02">A02</option> <option value="a.html#03">A03</option> <option>---------------</option> <option value="b.html#01">B01</option> <option value="b.html#02">B02</option> <option>---------------</option> </select> </form> 2つのページ(a.html、b.html)上部に上記のようなプルダウンメニューを置き、それぞれ相互に行き来できるようにしました。 一応正常に動くのですが、たとえばa.htmlのプルダウンで『B01』を選択してリンク先b.htmlに飛ぶと、プルダウンの選択項目が一番上の『A01』に戻ってしまっています。 b.htmlに飛んだ後も『B01』選択の状態で残したいのですが。 どのようにすればよいのでしょうか・・・ よろしくお願い致します。

  • ホームページでJavascriptを使ったプルダウンメニューによる画面切替え

    ホームページでiframe内のページをプルダウンメニューを変更したいのですが、アンカーポイントでのプルダウンメニューのリンクではホームページを代える事は出来ないのですか? プルダウンメニューを行うとJavascriptエラーが起きて画面がリンク先になりません。 ○Javascriptの文 <SCRIPT language=JavaScript type=text/JavaScript> <!-- function MM_jumpMenu(targ,selObj,restore){ //v3.0 eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'"); if (restore) selObj.selectedIndex=0; } //--> </SCRIPT> ○iframeの文 <iframe src="report.html" name=if width="440" height="500" frameborder="0">iframeを使用しております。<br></iframe> ○プルダウンメニューの文 <FORM name=form1> <SELECT onchange="MM_jumpMenu('parent.frames[\'if\']',this,0)" name=menu1> <option value="report.html\#0008" selected>第8回目</option> <option value="report.html\#0007">第7回目</option> <option value="report.html#0006">第6回目</option> <option value="report.html#0005">第5回目</option> <option value="report.html#0004">第4回目</option> <option value="report.html#0003">第3回目</option> <option value="report.html#0002">第2回目</option> <option value="report.html#0001">第1回目</option> </select> </form> どこが悪いのか教えてください。分かる方いらっしゃいますか? 教えてください、お願いいたします。

  • cgiへの送信とページリンクのできるプルダウンについて

    初めて質問させて頂きます。 cgiへ送る選択項目と別のページへリンクする項目をひとつの プルダウンでまとめたいと思っています。プルダウンを使って 別のページリンクするタグは分かるのですが、cgiへvalue値を 送るタグが分かりません。 <select onchange="top.location.href=this.options[this.selectedIndex].value"> ※別のページへリンク<option value="a.html">Aのページへ</option> ※cgiのname="A"へ"value値"B"を送る項目<option value="ここがわかりません">Bで検索</option> </select> 質問が分かりにくく大変申し訳ありませんが、ご指導下さると 幸いです。よろしくお願い致します。

  • 複数のjavascript

    うまく説明できないのですが、 プルダウンメニューが1つならエラーは出ないのですが、 下記のようにプルダウンメニュー2つにするとエラーが出てしまいます。。 どのように分ければエラーが出ないでしょうか・・・? 出来ればスッキリした形がベストなんですが・・・。 どうか宜しくお願い致します。 ------------------------------------------------------------ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>step25</title> <META http-equiv="Content-type" content="text/html; charset=Shift_JIS"> <script launguage="JavaScript"> <!-- function openlink(){ var n = document.f1.links.selectedIndex; if(n!=0){ location.href = document.f1.links.options[n].value; } } --> </script> </head> <body> <FORM name="f1"> <H2>美術館&博物館のリンク集</H2> <select name="links" onChange="openlink()"> <option>リンク先を選択</option> <option value="http://www.momat.go.jp">1111</option> <option value="http://www.momak.go.jp">2222</option> <option value="http://www.nmwa.go.jp">3333</option> <option value="http://www.tnm.go.jp">4444</option> <option value="http://www.kyohaku.go.jp">5555</option> <option value="http://www.narahaku.go.jp">6666</option> </select> <select name="links" onChange="openlink()"> <option>リンク先を選択</option> <option value="http://www.momat.go.jp">1111</option> <option value="http://www.momak.go.jp">2222</option> <option value="http://www.nmwa.go.jp">3333</option> <option value="http://www.tnm.go.jp">4444</option> <option value="http://www.kyohaku.go.jp">5555</option> <option value="http://www.narahaku.go.jp">6666</option> </select> </FORM> </body> </html> ------------------------------------------------------------

  • JavaScriptのプルダウン

    プルダウンメニューの中から選択したページへジャンプするようにしたいのですがわからないところがあるので教えてください。 TOPページはframesetでmenu、TOP2の上下に分かれています。プルダウンメニューはmenuのページに置き、選択したページを表示するのは下のTOP2の部分に表示させたいんです。 下記のように記述したのですがこのままだとジャンプしたページはmenuに表示されてしまいます。 -------------------- <script Language="JavaScript"> <!-- function popJump(selOBJ) { n = selOBJ.selectedIndex; location.href = selOBJ.options[n].value; } // --> </script> </head> <body> <form> <select onChange="popJump(this)"> <option value="#">選択して下さい <option value="top2.htm">トップページ <option value="A.htm">A <option value="B.htm">B </select> </form> -------------------- <option value="A.htm">のところでTOP2へジャンプするように指定するのだと思うのですが その方法がいろいろ調べてみたのですがわかりません。 わかる方、アドバイスをお願いします。

  • <input>のvalue値をプルダウンメニューから受け取りたいのです

    <input>のvalue値をプルダウンメニューから受け取りたいのですが、Javascriptを使用すれば出来るものでしょうか?もし可能でしたら、そのコードを教えて頂きたいです。 当方htmlとcssが少し出来る程度で、ウェブで調べても分からなかったので質問させていただきました。 以下はソースになります。 プルダウンのソース: <FORM> <SELECT> <OPTION SELECTED>SELECT</OPTION> <OPTION VALUE="AAABBB">A</OPTION> <OPTION VALUE="BBBBBB">B</OPTION> <OPTION VALUE="CCCCCC">C</OPTION> </SELECT> </FORM> ↑上で選択したvalueの値を、↓下の「ここの値」に渡したいです。 inputのソース: <input name="hosted_button_id" value="ここの値" type="hidden"> 宜しくお願いいたします。

  • 複数のプルダウンメニューの作り方。

    ・Aリスト、Bリスト…とプルダウンメニューを複数含んだフォームを一つのhtmlに作りたいのですが、上手くいきません。 一つのフォームに一つのプルダウンメニューは上手くいくのですが、Javascriptを二つ並べると動かなくなります。 とりあえず関数名を重複しない様にしたらいいという事だけはネットで調べてわかりました。 今は、下記の状態になっています。 <script language="JavaScript"> <!-- function MENU(){ mySelect = document.myForm.myMenu.selectedIndex; location.href = document.myForm.myMenu.options[mySelect].value; } // --> </script> <form name="myForm"> <select name="myMenu" onChange="MENU()"> <option value="">A</option> <option value="a001.html">A001</option> <option value="a002.html">A002</option> <option value="a003.html">A003</option> </select> <select name="myMenu2" onChange="MENU()"> <option value="">B</option> <option value="b001.html">B001</option> <option value="b002.html">B002</option> <option value="b003.html">B003</option> </select> </form> ご指南の程宜しくお願いします。

  • プルダウンメニューの利用

    htmlのプルダウンメニューを使用した値計算のインタフェースを作成したいと思っています。 プルダウンメニューに設定するメニュー項目に値を設定し、 onChangeを使用して、その値だけをPHPプログラムに渡すようにしたいのですが、 JavaScript部分をどのように書けばいいのか判りません。 どなたかご教授お願いいたします。 <form name="formtest" action="test.php" method="post"> <table> <tr> <th>カテゴリ*</th> <td> <SELECT NAME="iPlanet" onchange=""> <OPTION VALUE="9" selected>初期値 <OPTION VALUE="0">サンプル1 <OPTION VALUE="1">サンプル2 </SELECT> </td></tr> </table> </form> onchangeでValueの値をPHPに送りたいのです。 よろしくお願いします。

専門家に質問してみよう