WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:cgiで得た値をjavascriptへ返す方法

0:[投稿] ちびしん [2005/09/16 17:15 ][環境:winXP,IE6 Win2000,IIS,CGI,Perl]

お世話になっております。

最近勉強を始めました。
過去歴を拝見いたしましたが、いまいち解っていません。
やりたいことは、

javascript内の A・B・C という変数を渡し、
CGIで $Ans=A+B+C; をして、
その答え$Ansをjavascriptへ返したいのです。

http://www.XXX.com/YYY.cgi?A+B+C
で渡るそうですが、実はCGIでの受け方がわかりません。
渡すのもwindow.openせず実行ファイルを実行するような
形にしたいのもあります。

仮に受けたとして、
$Ansを返す方法が
exit($Ans);
かな(1と0だけ?変数駄目?)と思うのですが、
この過去歴が見つからず、
出来るところからという形にもなりません。

因みにA・B・Cは文字列でも数値でも配列でもある場合が、
ありますが、型判断はあとにするとして、

どうか皆様、ご教示お願いいたします。


1:[回答] gun [2005/09/17 02:11 ]

基本的なことですが、CGIはサーバで処理され、
JAVAスクリプとはブラウザで処理されるので、
値の受け渡しは間接的なやり方になります。

1)CGIでの受け方
http://www.XXX.com/YYY.cgi?A=xxx&B=yyy&C=zzz
という形式で渡すなら、CGI.pmで受け取れます。
詳細は「CGI.pm」でWeb検索してください。
また、下のようにフォームを使う場合でも、CGI.pmで受け取れます。
<input type=hidden name=A value="xxx">
<input type=hidden name=B value="yyy">
<input type=hidden name=C value="zzz">

2)JAVAスクリプトへの返し方
CGIの計算結果を渡すためには、
CGIでJAVAスクリプトを出力し、その中に含めるしかないです。


2:[質問] ちびしん [2005/09/26 13:18 ]

gun様、レスありがとうございます。

返信遅くなりすみません。
何とか苦心して出力することが出来ました。
(しかし1文字「A」だけ(T_T))

現在test.cgiとtest2.cgiをwindow.openにて下記のように呼び出しております。
そして与えた数値(この場合test.cgiは1、test2.cgiは1以外)を
表示(確実にGet出来たことを確認)したいのです。

しかし、
test.cgiでは、keywordsと表示され、
test2.cgiでは、A,,と表示されます。

AはGet出来ていますので、少しは合っているのでしょう。-->主旨からは外れていますが…。
しかし他がGetできていない理由やkeywordsが解りません。

下記HTMLと外部jsファイルとcgiスクリプトを記載します。
どうぞ宜しくお願いいたします。

追伸:
http://www.XXX.com/YYY.cgi?A=xxx&B=yyy&C=zzz
ではなく
http://www.XXX.com/YYY.cgi??A=xxx&B=yyy&C=zzz
ですか?
でも変化無(T_T)


<form name="index1" method="post" ENCTYPE="text/plain" onSubmit="CodeRun(1)">
 <input type="submit" value=" CGI "></input>
</form>
<form name="index2" method="post" ENCTYPE="text/plain" onSubmit="CodeRun(0)">
 <input type="submit" value=" CGI2 "></input>
</form>
-------
function CodeRun(){
 var arg = arguments;//引数を宣言
 var hensuC = arg[0]*3;
 if( arg[0] ){
   window.open( "../hoge/include/test.cgi?"+arg[0] );
 }else {
   window.open( "../hoge/include/test2.cgi?A="+arg[0]+"&B="+200+"&C="+hensuC );
 }
}
--------
#!/usr/bin/perl --

if($0 =~ /^(.*[\\\/])/) {chdir($1);}
use CGI;
#use JCode;
$cgi = new CGI;
#$JCode = new JCode;

@cgi = $cgi->param(@_);

$atai = @cgi[0]; ##### test.cgi
( $atai1,$atai2,$atai3 ) = ( @cgi[0],@cgi[1],@cgi[2] ); ##### test2.cgi

print "Content-type: text/html\n";
print "\n";
print "<html>\n";
print "<head>\n";
print "<title>Test_CGI</title>\n";
print "</head>\n";
print "<body bgcolor=\"#ffcccc\">\n";
print "This is CGI test;\n";

print $atai+"\n"; ##### test.cgiの記述で、keywordsと表示
print "$atai1,$atai2,$atai3\n"; ##### test2.cgiの記述で、A,,と表示

print "</body>\n";
print "</html>\n";

exit();


3:[回答] 神崎 [2005/09/28 00:36 ]

CGIモジュールの使い方を勉強されることをおすすめします。

http://search.cpan.org/src/LDS/CGI.pm-3.11/cgi_docs.html#query

英語が読めなければ、翻訳サイトを使うか、日本語で解説してあるところを探してみてください。


4:[保留] ちびしん [2005/09/28 11:06 ]

神崎様

ありがとうございます。
もしかしたら、ダウンロード自身もおかしいのかもしれない気もしてきました。
やってみます。ありがとうございました。


5:[完了] ちびしん [2005/09/30 17:45 ]

皆様

出来ました!
ありがとうございました<m(__)m>

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World