• ベストアンサー

CGIの中で出力するテキスト内容をhtml側で表示する方法。

okmotokunの回答

  • okmotokun
  • ベストアンサー率59% (92/155)
回答No.6

HTMLから scriptタグで cgi をコールして、cgiスクリプトから出力した文字列を表示させるのなら、cgiスクリプト側から、表示させたい文字列を、   document.writeln('表示させたい文字列') というように、javascriptの構文で出力してやらないといけません。 ただし、文字列の内容によってはエスケープする必要があります。

goku3
質問者

お礼

事務局から連絡で、投稿規制に抵触があったとのことです。 (ご回答原文改訂されたとのことでした) 申し訳ございませんでした、あらためて、お礼させて頂きます。 ご回答ありがとうございました。

関連するQ&A

  • CGIで出力するテキスト内容をhtml側で表示する方法の2

    前回、 http://okwave.jp/qa4532069.html で質問させて頂いた者です。 その後、joker_mk2さんに教えていただいた方法を使って、下記のように表示できるようになりました。 (前回、ブラウザの設定を色々変えた後、再起動で動くようになったようです) 他のページも参考にして、html側の書き方を変えてみましたが、この方法でもOKでしょうか。 (動いているから、結果オーライかも知れないのですが) 1.CGIスクリプト(Perlで記述)を用意... test.cgi ----------------------------------------------------- #!/usr/bin/perl my $val = 123; print "Content-type: application/x-javascript\n\n"; print "document.write('<p>変数の値=$val</p>')"; ----------------------------------------------------- 2.htmlを用意 ... test.html ----------------------------------------------------- <html> <head> <title>test</title> <meta http-equiv="Content-Type" content="text/html; charset=x-sjis"> </head> <body> <script language='JavaScript' src="http://xxx/CGI/test.cgi"> </script> </body> </html> ----------------------------------------------------- 上記のとき、動作として、 ◆ブラウザからhtml(http://xxx/test.html)にアクセスした場合、 ブラウザ上に 「変数の値=123」 と表示された。 (元々、やりたかったのは、こういうことでした。ありがとうございました) ◆ブラウザからCGIのパス(http://xxx/CGI/test.cgi)に直接アクセスした場合、ファイルのダウンロード確認ダイアログが出た。 ファイルをダウンロードして中身を見ると、 「document.write('<p>変数の値=123</p>')」 と書かれていた。 以上です

    • 締切済み
    • CGI
  • CGIでフォームからの入力内容を表示されない。

    初歩的な質問ですみません。 自宅サーバを使っています。 ■ActivePerl 5.8.8 Build 822 ■httpd142p ------------------------------ ■httpd142p ┗■cgi-bin  ┣■cgi-lib.pl  ┣■test.cgi  ┗■test.html ------------------------------- CGIは動作します。 一行目のパスもあっています。 --------------------------- 【test.cgi】 #!C:/perl/bin/perl #require './cgi-lib.pl'; #&ReadParse(*MYDATA) print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<TITLE>RESULT</TITLE>\n"; print "<BODY>\n"; print "氏名 = $MYDATA{'simei'}\n\n"; print "住所 = $MYDATA{'jyusyo'}\n"; print "</BODY>\n"; print "</HTML>\n"; exit; -------------------------------- 【test.html】 <HTML> <HEAD> <TITLE>TEST</TITLE> </HEAD> <BODY> <P> <FORM ACTION="test.cgi" METHOD="POST"> 氏名:<INPUT TYPE="text" NAME="simei"> 住所:<INPUT TYPE="text" NAME="jyusyo"> <INPUT TYPE="submit" VALUE="送信"> <INPUT TYPE="reset" VALUE="リセット"> </P> </FORM> </BODY> </HTML> ---------------------------------- ■実行結果 氏名 = 住所 = ---------------------------------- どなたかご教授ください。

    • ベストアンサー
    • CGI
  • 1つのhtmlページにたくさんのCGIを表示したい

    1つのhtmlページにたくさんのCGIを表示したいのですができますか? "Content-type: text1/html\n\n" /* ** CGI版のhello.c(HTML仕様) */ #include <stdio.h> main(){ printf("Content-type:1/html\n\n"); /* ここから HTML でお馴染みのタグ */ <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> /* あいうえお */ "Hello C World!<BR>\n" "</BODY>" "</HTML>" } みたいなCGIを入れたいのですが。

    • 締切済み
    • CGI
  • エラー表示の意味を解説してください

    CGI初心者です。自分の端末でサーバ設定し、テスト中の段階です。htmlファイルはブラウザからきちんと表示されました。が、CGIファイルを表示させようとすると、 CGI エラー - Content-Type ヘッダが正しくありません。 CGI 出力メッセージ: Can't open perl script "C:\www\hiro\ISO": No such file or directory とエラーがでます。ちなみに、スクリプトには #!/usr/bin/perl print"Content-type: text/html\n\n"; print"<HTML>\n"; print"<HEAD>\n"; print"<TITLE>CGI No1</TITLE>\n"; print"</HEAD>"; print"<BODY>\n"; print"CGIプログラム No.1,テスト成功!\n"; print"</BODY>\n"; print"</HEAD>\n"; と記述しました。なにがいけないのか教えてください。

    • ベストアンサー
    • CGI
  • 以下のようなものを作ったのですが、cgiによるjavascript出力

    以下のようなものを作ったのですが、cgiによるjavascript出力がうまくいきません。 理由がわからず困っています。 【http://www.gran-fenix.com/nao_archive/test/index.htm】 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>テスト</title> <script type="text/javascript"><!-- var pageseq = 0; //--></script> <script src="./trick/test.cgi"></script> </head> <body style="background-color:white"> <noscript><p style="color:deeppink;font-weight:bold"> 【注意】 JavaScript が無効になっています。 </p></noscript> <br> <h1 style="font-size:200%;font-weight:bold;color:maroon"> <script type="text/javascript">document.write(page_title[pageseq]);</script> </h1> <hr> </body> </html> 【http://www.gran-fenix.com/nao_archive/test/trick/test.cgi】 #!/usr/local/bin/perl $jscr = 'test.txt'; $scr_body = ''; open (JSCR "<$jscr") || die "Can't open the JavaScript file\n"; while (<JSCR>) { $scr_body .= $_; } close (JSCR); print "Content-Type: text/javascript\n\n"; print <<"SCR"; $scr_body SCR 【http://www.gran-fenix.com/nao_archive/test/trick/test.txt】 var page_title = new Array(); page_title[0] = "テスト成功"; 具体的には、test.txtにある「テスト成功」の文字がHTMLのh1タグ部分に出力されません。 HTMLで、scriptタグのsrcを、test.txtと同じ内容のJSファイル test.js(場所も同じディレクトリ)にしてみると成功するので、原因はcgiにあると思うのですが、どこがおかしいのかわかりません。 なお、test.cgiのパーミッションは755、test.txtのパーミッションは644です。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • CGIの中にJAVA Script

    CGIプログラムはまったくの初心者です。 perlでCGIプログラムを組んで、HTMLを書き出すときに Java Scriptもいっしょに書き出すことはできますか? print "Content-type: text/html\n\n"; print "<html><head><title>$title</title>\n"; ---この間に入れたいのですが・・・--- print "</head>\n"; print "<body topmargin=0 leftmargin=0 marginheight=0 marginwidth=0 bgcolor=$bg_color text=$text_color link=$link_color vlink=$vlink_color background=$bg_gif>\n"; Java Scriptの menu_0.addMenuItem("ショップ案内","location='shop.html'"); 等を入れるときに 「"」や「;」はどういう風に表現すればうまくいくのでしょうか。 Java Script以外のタグの中の<font size="2">などは「"」をとれば 大丈夫なのは知っていますが、Java Scriptで「"」や「;」をとってしまうと 動作しなくなりました。

  • CGIスクリプトの結果が表示しない

    windows2000 proffesinal sp.4でActivePerl5.8.8..819・・・・、Apache2.054の環境で"10日で覚えるPerlCGI"を使用。IEバージョンは5でページを「表示できません」のエラーがときたまでる。 上記環境でApacheは正常に動作。TeraPad使用。CGIスクリプト1-2.cgiとして作成。 #! C:/perl/bin/perl # CGIヘッダーの出力 print "Content-type: text/html\n\n"; print "<DOCTYPE HTML PUBLIC \n-//W3C//DTD HTML4.01//EN\">\n"; print "<html>\n"; print "<head><title>Hello HTML</title></head>\n";# htmlの出力 print "<body><p>こんにちわ。これはHTML文書の例です。</p></body>\n"; print "</html>\n"; 上記スクリプトを1-2.cgiとしてApaghe2-htdocs-tendaysに保存 IEのURLに:: http://127.0.0.1/tendays/1-2.cgiと入力・・・そして下記の表示が出ました。 #! C:/perl/bin/perl# CGIヘッダーの出力print "Content-type: text/html\n\n";# htmlの出力print "\n"print こんにちわ。これはHTML文書の例です。 \n";print" "; 原因を教えてください。windows7 64bit でもこのようにスクリプトだけが表示されたことがあり(perl,Apacheのバージョンも最近のものを使用)その時は、相談室にお世話になりながら自分の 未熟さにあきれお尋ねしなかったのですが、最後HTML5を習えばのお答えで、今。参考書を買って人通り見たのですが、フォームメールや掲示板はやはり裏でCGIが動作しているので。また古いパソコンで始めたのでしたが最初からつまずきました。doreamweaber もあるのですが、能力がないのに 人様の作成したフりーソフトをスクリプトの意味が分からず貼り付けるのはいささか情けないかなと 考えています。最終的にはそうなると思っていますが、できればsendmailを使用したCGIスクリプトとかんがえています,が。とりあえず一歩一歩づつと思っています。10年以上前に作成したホームページをアップしっぱなしです。メールが送信できません。当時のプロバイダーがocnでその時提供されたもので裏でCGIが動いているなんて知りませんでした。今biglobeです。 自分の作りかけのホームページのURLは http://www7b.biglobe.ne.jo/~asunarohei/indexhei.htmlです。メールのスクリプトを貼り付けたいのです。それと掲示板をリンクさせたいです。 わからないことだらけで、ご迷惑かけますがよろしくお願いします。

  • 初歩的なCGIですが

    #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD><TITLE>perlテスト</TITLE></HEAD>\n"; print "<BODY>\n"; print "本文1<BR>\n"; print "本文2<BR>\n"; print "</BODY>\n"; print "</HTML>\n"; 上記プログラムをFTPサーバにアップロードして、perlプログラム内では正しい結果が出たのですが、ブラウザ上で確認したら、htmlのタグが除かれた状態のソースが出てきました。  正しい結果をブラウザ上で表示させるにはどうすればいいのでしょうか?教えてください。

    • ベストアンサー
    • CGI
  • テキストファイル内の変数を展開して出力したい

    テキストファイル内に変数を書いておいて、出力時に その変数を展開させる方法を教えてください。 具体的には、[test.txt]を[出力]のようにしたいのです。 ためしに[test.cgi]を作ったのですが[test.txt]の内容がそのまま出てきてしまいました。 [test2.cgi]ができるなら、[test.cgi]でもできると思っていたのですが… [test.cgi] #!/usr/local/bin/perl $moji="OK"; print "Content-type: text/html\n\n"; open(IN, 'test.txt'); while (<IN>) { print "$_"; } close(IN); exit; [test2.cgi] #!/usr/local/bin/perl $moji="OK"; $naka="<HTML><BODY>$moji</BODY></HTML>"; print "Content-type: text/html\n\n"; print "$naka"; } close(IN); exit; [test.txt] <HTML><BODY>$moji</BODY></HTML> [出力] <HTML><BODY>OK</BODY></HTML>

    • ベストアンサー
    • Perl
  • CGIでテキストボックスの内容によって条件分岐

    CGI超初心者です。 htmlファイルに設置したテキストボックスの値によって CGIで表示させる内容を変えたいです。 ネットで検索してコードを作成してみたのですが うまくいきません。 どのように修正すればいいのでしょうか? test.html---------------------------------------- <FORM action="test.cgi" method="POST"> 変数を入力 <INPUT type="text" name="hen"> <INPUT TYPE="submit" VALUE="送り"> </FORM> ------------------------------------------------- test.cgi----------------------------------------- #!/usr/local/bin/perl $h = $FORM{'hen'}; print "Content-Type: text/html; charset=Shift_JIS\n\n"; print "<html>\n"; print "<head><title>サンプル</title></head>\n"; print "<body>\n"; if ($h > 50) { print "<p>変数hの内容は50より大きいです。</p>\n"; } else { print "<p>変数hの内容は50より小さいです。</p>\n"; } print "</body>\n"; print "</html>\n"; exit; ------------------------------------------------- テキストボックスに、50以上の数字を入力しても、50以下の数字を入力しても どちらも 「変数hの内容は50より小さいです。」 と表示されてしまいます。 よろしくお願いいたします! ※ 前回の質問(http://okwave.jp/qa/q8179935.html) より、CGIは使わない方向で検討中ですが CGIに途中まで足をつっこんでしまい、 気になったので質問させていただきました。

    • ベストアンサー
    • CGI