• ベストアンサー

Locationについて

こんにちは。 今PerlでLocationを使って2つに分かれているフレームの(frame1とframe2)frame1にリンクをさせようとしています。 下のソースの中にTarget="frame1"を追加したいのですが追加は可能でしょうか? プログラムはこんな↓感じです。 print "Location: http://www.XXX/cgi-local/XXX.cgi?free=$XX\n\n"; ご教授ください。よろしくお願いします。

  • aeic
  • お礼率10% (60/582)
  • Perl
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.2

フレーム内で移動する場合はそのフレーム名またはターゲット名を指定してください。 self.location.href="http://www.aaa.aa.aa"; selfはそのページがあるフレーム自身のことです。 もしくは移動するフレーム名を設定してください。 サブミットと書かれているのでフォームのデータを送るのでしょうか? その場合、上記の方法では出来ません。 遷移先にデータを送る場合はフォームのaction指定を動的に変えれば出来ます。 その例を載せておきます。 例) <HTML> <HEAD> <SCRIPT> function send(){ //どのラジオボタンがチェックされたか判定 var i; if (document.form_a.r_b.length) { for (i = 0; i < document.form_a.r_b.length; i++) { if (document.form_a.r_b[i].checked) { var ck_b = document.form_a.r_b[i].value; } } } else { if (document.form_a.r_b.checked) { var ck_b = document.form_a.r_b.value; } } //チェックされたボタンから遷移先を分ける if(ck_b=="A"){ document.form_a.action="URL1";//FORMのaction設定 document.form_a.submit();//submit処理 }else if(ck_b=="B"){ document.form_a.action="URL2";//FORMのaction設定 document.form_a.submit();//submit処理 } } </SCRIPT> </HEAD> <BODY> <FORM name="form_a" method="POST" target="_self"> <INPUT type="radio" name="r_b" value="A" checked>A <INPUT type="radio" name="r_b" value="B">B <INPUT type="button" value="SUBMIT" onClick="send()"> </FORM> </BODY> </HTML>

その他の回答 (1)

  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.1

未確認ですが、 print"Window-target:フレーム名(ターゲット名)"; これで出来るそうです。 ただしネットスケープ限定だそうです。 IEでは基本的に出来ないようです。 他の方法としてはJavaScriptに処理を飛ばしてフレーム指定して遷移するか、 フレームページごと読み込むことぐらいですね。 どちらもご希望の動作とは異なると思いますが・・・。

aeic
質問者

補足

ラジオボタンを選択して、ラジオボタンが選択物によって最後にサブミットボタンを押した時に違うリンク先へ飛ばす方法をいろいろと考えていました。 考えた末にジャバスクリプトでリンク先を違う方法に変える事にしました。 ステップ1として サブミットが押された時点でリンクさせる方法を試みましたが同じページを読み込んでしまいます。 サンプルは下記の通りです。 location.href="http://www.aaa.aa.aa" どうかうまくいく方法を教えて頂けないでしょうか? お願いします。

関連するQ&A

  • perlでLocation

    Locationでは#xxxというのは使えないのでしょうか? #!/usr/local/bin/perl print "Location:xxx.cgi#xxx/?userID=$name\n\n"; exit; という風に書いています。 xxx.cgiはローカルにあるcgiでそのcgiの中身は表示できます。 しかしxxx.cgiの中の <xxxx.cgiの中身> print <<"EOM"; <html> . . . <A NAME="xxx>image</A> . . . </HTML> EOM exit; xxxのところでなく一番最初が表示されてしまいます。 どうすればいいのでしょうか?

    • ベストアンサー
    • Perl
  • Locationでターゲット指定はできますか?

    print("Location: ../admin.cgi?action=head&page=cnn\n\n"); のように他のcgiへページを移行しているのですが、フレームの中に cgiファイルを出力しているのでtargetの指定が必要になります。 Locationを使ってtarget指定は出来ないのでしょうか? もし、やったことのある人がいればご指導ください。

    • ベストアンサー
    • Perl
  • Locationを使いたいのですが

    はじめて質問します。よろしくお願いします。 フォームからデータを受け取って、なんらかの処理をしてから、 locationで別のページへジャンプしたいのです。 下のソースで、ローカル(win95)では正常に動いたのですが、 サーバーに移すと送信後のtest.cgiがエラーになってしまいます。 text.txtへの書込みはちゃんと行われています。 原因がわからなくて困っています。 locationの使い方が間違っているのでしょうか? ↓↓ test.cgiソース ↓↓ ------------------------------------------------------------ #!/usr/bin/perl require 'jcode.pl'; &decode; if ($FORM{'cmd'} eq "regist") { &write; # ファイル書込み print "Location: index.html\n\n"; } else { print <<END; Content-type: text/html <HTML><HEAD><TITLE>タイトル</TITLE></HEAD> <FORM ACTION="test.cgi" METHOD="POST"> <INPUT TYPE=TEXT NAME="message" VALUE=""> <INPUT TYPE=SUBMIT NAME="submit" VALUE="送信"> <INPUT TYPE=HIDDEN NAME="cmd" VALUE="regist"> </FORM> </BODY></HTML> END } exit; # ファイル書込み sub write { open OUT, ">test.txt"; print OUT "$FORM{'message'}\n"; close OUT; }

    • ベストアンサー
    • Perl
  • エラーページでLocationしたい

    .htaccessにて ErrorDocument 403 /error.cgi とかしておいて error.cgiにて #!/usr/bin/perl print "Location:http://domain/\n\n"; みたいなことしたいんですが、IEではページの表示が認められてませんとなってしまいました。 一応内容を表示して Refresh:0;URL=..... としたら飛んでくれますが、LocationはエラーCGIでは使えないんでしょうか。 ----- Apache/1.3.26 Server perl, version 5.005_03 built for sun4-solaris Windows 2000 Pro SP1 Internet Explorer 5.5 SP2

    • 締切済み
    • CGI
  • PerlのLocation:が文字として出力されてしまいます

    Perl/CGI内でボタンを配置し、そのボタンを押すとサブルーチンにあるprint "Location: $戻り先\n\n";でジャンプするようにしたいのですが、 「Content-type: text/html」より後にLocationを使うとジャンプせずに画面に文字として「Location: $戻り先」と表示されてしまいます。 このような場合どうすればよいのでしょうか?

    • ベストアンサー
    • CGI
  • Locationの部分をいじる

    携帯サイトを作っています。 パスワード認証(1.cgi)→端末振り分け(2.cgi)という流れにしたいのですが、vodaとPCは問題なく各々の目的のページに飛べるのですが、i-modeがエラーがでてしまうようです。 振り分け先に指定しているURLなんかはちゃんと合っています。 どうも、i-modeでLocationが機能しないのが原因ではないかと思うのですが、cgiのいじり方が分かりません。 サポートBBSによると1.cgiの以下の部分を変えるそうなのですが if ($pass eq $password) { print "Location: $cgi\n\n"; exit; } の部分のLocationが機能しないのだと思います。 秘密cgiで表示する最初のページを、この部分で読み込み表示する方法や、この部分にcgiへのリンクを張る方法をとられてはいかがでしょう? ということで、具体的にどうしたらよいのか分かりません。(サポートBBSが実質停止状態なので・・・) わかる方いらしたら、ご教授いただければと思います。

    • 締切済み
    • CGI
  • Locationが飛ばなくなった・・・

    Win2000 SP2+IE5.5です。 新しいチャットでも作ろうと思っていたら、httpヘッダプリントの Location:hogehoge でどこのページにも飛ばなくなってしまったのです。 ためしに以前は動いていたほかの掲示板やチャットを使ってみましたが、ぜんぜん飛びません。 飛ばずに真っ白のページが表示されています。 いわゆる、CGIが何も出力しなかったときに、勝手にIEが生成する空白のHTMLです。 サーバーはローカル内IISですが、サーバーが悪いのかと思って、フリーのANHTTPDも使ってみましたが、結果は同じでした。 IEの不具合かもしれないですが、Locationという言葉がわかる人たちが多いこちらのカテゴリで質問しました。 こんなことってあるんでしょうか。 ちなみにRefleshはちゃんと動きます。

    • 締切済み
    • CGI
  • HTMLからCGIへデータを引き継ぎ

    HTMLでメールフォームを作りCGI(Perl)で次のプログラムを作りました。 #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "$mail\n"; print "$namae\n"; print "$naiyou\n"; 動作確認のためプログラムは少しにしました。何も表示されません。

    • ベストアンサー
    • Perl
  • Location: で cgi → cgi は不可?

    print "Location: ./index.cgi\n\n"; 上記の命令でエラーとなります。 i-mode用のHPを作ろうと思うのですが,情報の受渡が必要でして・・・ どうすればいいのでしょう? 何かいい方法有りませんか?

    • ベストアンサー
    • Perl
  • HTML上でcgiをイメージタグで呼び出すと×が出ます

    お世話になっております。 お分かりになる方いらっしゃいましたら、お手数ですがご教授願えますでしょうか? cgiを勉強しているのですが、以下のような感じで テストページを作ってみたところうまくcgiが呼び出せなくて困っています。 test.htmにてcgiをimgタグで呼び出そうとしています。 しかし、ブラウザで表示すると「×」が表示されてしまいます。 【test.htm】 --------------------------------------------------------------- <html> <head> <title>テスト</title> </head> <body> <IMG src="http://www.xxxxx.xx.xx/test.cgi" width="401" height="31" border="0"> </body> </html> --------------------------------------------------------------- ※「xxxxx.xx.xx」はドメイン名が入ります。 【test.cgi】 --------------------------------------------------------------- #!/usr/local/bin/perl print "Content-type: text/html\n"; print "\n"; print "<html>\n"; print "<head>\n"; print "<title>テスト</title>\n"; print "</head>\n"; print "<body bgcolor=\"#ffcccc\">\n"; print "これはCGIのテストです。\n"; print "</body>\n"; print "</html>\n"; --------------------------------------------------------------- となっています。 ちなみに設置の仕方は以下の通りになります。  html/(レンタルサーバのメインディレクトリ)  │  ├ test.htm ……………………… (755) テストcgi呼出しHTML  │  └ test.cgi …………………… (755) テストcgiファイル 直接test.cgiを指定すると問題なく表示されます。 何か原因が他にあるのでしょうか? お手数ですが宜しくお願いいたします。

    • ベストアンサー
    • HTML

専門家に質問してみよう