CGIの処理によって表示するウィンドウを変えたい

このQ&Aのポイント
  • 商品管理画面で、ラジオボックスで削除と修正のモードを選択し、商品の写真をクリックすると別ウィンドウが開くCGIの処理方法を紹介します。
  • formタグを使用して、モードの選択と商品IDを送信し、処理結果を別ウィンドウに表示する方法について解説します。
  • また、処理を差し戻す場合にはコメントを追加して元の画面へ戻るように設定し、表示ウィンドウを使い分ける方法を説明します。
回答を見る
  • ベストアンサー

CGIの処理によって表示するウィンドウを変えたい

商品の管理画面を作成しています。 一覧画面で、まずラジオボックスで削除と修正のモードを選択して、次に商品の写真をクリックすると別ウィンドウが開いて削除画面なり修正画面を表示するというCGIを作成しています。 formタグの中は以下の感じにしました。  <form name="choice" method="get" target="profile" action="management.cgi">   <p>    <input type="radio" name="mode" value="0" /><br />    <input type="radio" name="mode" value="1" />   </p>   <p>    <button type="submit" name="id" value="001" />     001    </button><br />    <button type="submit" name="id" value="002" />     002    </button>   </p>  </form> これでCGIに対して、モードの選択と商品IDを送信し、処理結果を別ウィンドウに表示することが出来ます。 しかし、このやり方だと、処理を差し戻す場合も別ウィンドウに表示されてしまいます。 つまり削除と修正の選択を忘れたまま商品を選択してしまった場合、「削除、または修正を選択してください。」というコメントを追加して元の画面へ戻るようにしてあるのですが、この画面だけは別ウィンドウでなく元のウィンドウに表示させたいのです。 こういう表示ウィンドウの使い分けは出来るのでしょうか? CGIの言語はPerlを使用しています。

  • HTML
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • neko-ten
  • ベストアンサー率55% (1287/2335)
回答No.1

ウィンドウ制御はブラウザで行うので、Perl単体では難しいと思います。 submitさせる前にJavaScriptで判断を行い、エラーがなければsubmitする・・・ もしくはhttpRequestをバックグラウンドで行い、応答を基にJavaScriptで処理をする・・・ となるかと。

makoji
質問者

お礼

JavaScriptはあまり詳しくないので、今、簡単な本を買って読んでいます。 読み終わって実際のプログラムを作ってみないと、お返事を返すにも返せない(何といっても一つの回答に対して一つしか補足は付けられないので)と思い、せっかくアドバイスをいただいたのに、何もお返事しておりませんでしたが、なかなか時間が取れず、放置状態になってまいりましたので、一旦締めさせてください。 その上で、またお聞きしたい件が出ましたら、改めてJavaScriptの板に上げさせていただこうと思います。 とりあえず、JavaScriptを使えば題意が達成できるであろう方向性を教えていただき、とても助かりました。ありがとうございます。

関連するQ&A

  • CGIでチェックボックスのエラーチェック

    下記のような感じで チェックボックスをいくつか配置し、CGIで動かしています。 それぞれの質問に関して未選択がある場合、 メッセージボックスで「未選択があります」と表示させたいです。 できればjavascriptでなくCGIでやりたいです。 どのようにコードを書けばいいですか? ためしに以下のように書いてみましたがだめでした。 ・・・ elsif ($q1 eq "" && $q2 eq "") { &error($error = "すべての項目に回答して下さい"); } ・・・ お願いいたします! <form name="q1" action="test.cgi" method="POST"> Q1 <input type="radio" name="q1" value="q1_a"> A <input type="radio" name="q1" value="q1_b"> B <input type="radio" name="q1" value="q1_c"> C Q2 <input type="radio" name="q2" value="q2_a"> D <input type="radio" name="q2" value="q2_b"> E <input type="radio" name="q2" value="q2_c"> F </form>

    • ベストアンサー
    • CGI
  • アンケートCGI作成について、form actionの呼びだし等につい

    アンケートCGI作成について、form actionの呼びだし等について質問です。 初めまして、CGIアンケートを作成しようとしているPerl初心者です。 説明ページ(ex01.html) ↓ フォーム付きアンケートページ(enk01.html) ↓ 説明ページ(ex02.html) ↓ 以下略 という流れでアンケートを続かせたいのですが (だいたい、ex.htmlとenk.htmlが各20ずつくらいです。) フォーム付きアンケートのフォーム <form action="form.cgi" method="post"> <input type="radio" name="Emotion_Body" value="0" checked> 選択肢1 <input type="radio" name="Emotion_Body" value="1"> 選択肢2 <input type="radio" name="Emotion_Body" value="2"> 選択肢3 <input type="submit" value="次のアンケート"> となっていて、actionに次のページのhtmlをいれ込むことができませんでした。 (form.cgi:formから受け取ったデータを外部ファイルへ書きだすCGIファイルです。) フォームの「次のアンケートボタン」を押すと、 form.cgiにフォームのデータを送りつつ、ex02.htmlを表示させるということはできないものでしょうか? 過去ログによるCGIに表示させる方法を書くのだと、 フォームページの間に、ただのhtmlファイルを挟むので、 (例:enk01.html→ex02.html→enk02.html→…) 各ページに対応したCGIファイルを書かなければならないということなのでしょうか? よろしくお願いいたいします。

    • ベストアンサー
    • Perl
  • ローカル環境でのCGI

    社内アンケートとして、 CGIをもちいた、アンケートを制作しております。 <FORM ACTION="http://hogehoge.local/cgi-bin/aaa.cgi" METHOD="POST" onSubmit="return form_check(this)" name=""> なまえ:<INPUT TYPE="radio" NAME="name" VALUE="OK"> ~~~~~~ ~~~~~~ <INPUT TYPE="hidden" NAME="number" VALUE=""> <INPUT TYPE="submit" NAME="answer" VALUE="送信する"> <INPUT TYPE="reset" NAME="reset" VALUE="リセット"> </FORM> </form> でhoge.cgiを動かしたいと思っております。 サーバーへアップし、cgi-bin配下でパーミッションを設定した場合はきちんと動きます。 当たり前ですが、ローカル上では動かなかったです。 社内ネットワーク上 \\hogehoge\cgi-bin\aaa.cgi ⇒ http://hogehoge.local/cgi-bin/aaa.cgi 【動かず】 hogehogeというディレクトリのcgi-binディレクトリのaaa.cgiを修正しますと そのままcgiが動くようにしたいのです。 htmlはもちろんのこと動きます。 サーバーアップ http://hogehoge.local/cgi-bin/aaa.cgi 【動作確認OK】 という状態で困っております。

    • 締切済み
    • CGI
  • CGIのボタンの処理について

    CGIのフォームにチェックボックスがあってボタンを押すとある処理をさせたいのですが、 <form action="○○.cgi" method="post"> を使って新たなCGIを呼び出さずにフォームのCGIで処理をし、結果を反映させたいのです。もし方法をご存知の方がいましたら教えて欲しいのでよろしくお願いします。 <-------cgiソースの一部----------> print "<input type=\"checkbox\" name=\"re_$n\" value=\"$userdata[$i]\">"; print "<input type=\"button\" value=\"処理\">"; ボタンを押した時に処理をしてすぐさまリロードして同じページに結果を反映させたい!

    • ベストアンサー
    • CGI
  • ボタン別のダイアログ表示について

    1つのcgiで、その都度押されるsubmitボタンにあわせてダイアログを表示させていです。 今、「更新」ボタンと「削除」ボタンがあり、 両方とも同じcgiでプログラム内で更新と削除を切り分けています。 <form method=post action="del_up.cgi"> <input class="button" name="update" type="submit" value="更新"> <input class="button" name="delete" type="submit" value="削除"> これに、 (1)更新を押した場合のダイアログ window.confirm("更新しますか?"); (2)削除を押したときのダイアログ window.confirm("削除しますか?"); のような感じで表示させたいのですが、可能でしょうか?

  • ラジオボタンの内容を受けてCGIでコメント表示

    あるhtmlページにラジオボタンを設置しています。 このボタンを選択したらこのページ、このボタンの場合はこのページ、 と、CGIを使って、選択したボタンによってさまざまなページにジャンプさせています。 最後に、判定結果を掲載するページとして、 インラインフレームを設置し、そのなかにcgiを読み込ませて 選択したラジオボタンによってそのなかに表示させるコメントを変えたいです。 Q1でaを選んだ場合はこのコメント、 Q2でbを選んだ場合はこのコメント、 と、拾ってくる質問が記載されているhtmlページが複数にわたります。 以下でいう、test2.cgiは、どのように記述したらいいでしょうか? サンプルコードなど掲載されているサイトがあったら教えてください。 <ラジオボタンが設置してあるhtmlページ> <form name="q1" action="test1.cgi" method="POST"> 質問 <input type="radio" name="q1" value="q1_a">回答a <input type="radio" name="q1" value="q1_b">回答b <input type="radio" name="q1" value="q1_c">回答c <input type="submit" value="判定" /> <コメントを表示させるhtmlページ> 判定結果をお知らせします <div id="frame"> <iframe src="test2.cgi" title="判定結果"> </iframe>

    • ベストアンサー
    • CGI
  • formの指定ページをthickboxで表示したい

    現在、HTMLを使用してホームページを作成しています。 ラジオボタンとフォームの組み合わせで決まったリンク先をthickboxで表示したいと思ってるのですが、うまくいきません。 現在のHTMLソースは、このようになっています <script language="JavaScript"> function Link(btn) { if(document.form1.q1[0].checked && document.form1.q2[0].checked && btn.name=='a')window.open("./answer1.html", "width=900,height=700"); if(document.form1.q1[0].checked && document.form1.q2[1].checked && btn.name=='a')window.open("./answer2.html", "width=900,height=700"); </script> <form name="form1"> <p> <h1>質問1</h1> <input type="radio" name="q1" value=""> 0 <input type="radio" name="q1" value=""> 1 </p> <p> <h1>質問2</h1> <input type="radio" name="q2" value=""> 0 <input type="radio" name="q2" value=""> 1 </p> <p> <input type="button" class="thickbox" name="a" title=" " value=" a " onclick="Link(this)"> <input type="button" class="thickbox" name="b" title=" " value=" b " onclick="Link(this)"> </p> </form> 見づらいので多少簡易化してありますが、おおよそこのようなソースになっています。 今のソースだと、別窓でリンク先(answer1.htmlなど)が開いてしまい、 元々開いていたページには全く内容のないthickboxが表示されます。 ラジオボタンとフォームで指定したリンク先(answer1.htmlなど)をthickboxで開きたいのですが、 試行錯誤はしてみたもののどうしてもうまくいきません。 どのように直せば良いか、わかる方がいたら教えていただけないでしょうか? よろしくお願い致します。

    • ベストアンサー
    • HTML
  • ドロップダウンリストから、新ウィンドウへ移動するにはどうしたらよいのでしょうか?

    こんばんは。プログラム初心者ですが、よろしくお願いいたします。 現在、下記のスクリプトを書いておりますが、これを「新ウィンドウを開いて、そこに移動させる」にはどうしたらよいのでしょうか。 大変恐縮ですが、初心者ですので、下記を修正していただければ幸甚です。 <FORM name="form"><SELECT name="test"> <OPTION selected>リンク先を選ぶ</OPTION> <OPTION value="http://○○○.html">○○○</OPTION> <OPTION value="http://◎◎◎.html">◎◎◎</OPTION> <OPTION value="http://●●●.html">●●●</OPTION> </SELECT> <INPUT type="button" onclick="location.href=form.test.options[form.test.selectedIndex].value" name="button" value="移動"></FORM> なお、<FORM name="form">を<FORM target="blank" name="form">にしてみましたが、新ウィンドウは開かず、元のウィンドウのまま移動しました。 お手数ですが、よろしくお願い申し上げます。

    • ベストアンサー
    • HTML
  • ラジオボタンのチェック数に応じて、リンク先のページを切り替えたい

    「yes」か「no」だけを選択できるラジオボタンを10組準備し、 yesが選択された数だけをカウントし、 yesの数:0~2 → 01.htm yesの数:3~5 → 02.htm yesの数:6~8 → 03.htm yesの数:9以上 → 04.htm ラジオボタンをチェックし終えた後、 ボタンをクリックすると目的のページにジャンプする仕組みを造りたいのですが、 JavaScriptが全くわからないため、 本と格闘したものの作ることが出来ませんでした。 formの名前は「test」とし、 各ラジオボタンの名前は「q01」「q02」・・・と番号を振って管理しています。 HTMLのソースを記載します。 <form name="test"> <p> <input type="radio" name="q1" value="1">はい  <input type="radio" name="q1" value="0">いいえ </p> <p> <input type="radio" name="q2" value="1">はい  <input type="radio" name="q2" value="0">いいえ </p> <p> <input type="radio" name="q3" value="1">はい  <input type="radio" name="q3" value="0">いいえ </p> ~以下name="q10"まで続く <input type="button" value="採点"> </form> どなたか是非、お知恵をお貸しください。

  • cgiへのパラメータについて

    htmlのformで入力した名前をcgiで受け取ると"encstr"となります。 エンコードした文字列を受け取るにはどのようにすれば良いか教えてください。 <form name="js"> お名前:<input type="text" name="txtb" value=""><br> <input type="button" value="送信" onclick="gogo()"><br> </form> <script type="text/javascript" language="javascript"> <!-- function gogo() { var str1=document.js.txtb.value; var encstr = encodeURI(str1); document.write('<img src="/cgi-bin/gogo.cgi?namae=encstr">'); } // --> </script>

専門家に質問してみよう