WEB相談室

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

タイトル:JavaScriptからCGIにデータを渡す

ゴン太 [WriteDate : Mon May 28 10:54:59 2001]

こんにちわ、質問です。よろしくお願いします。

CGI上でJavaScriptを記述して
例えば、ディスプレイサイズを取得して
その値を、CGI(Perl)に返す方法を知りたいです。
サイズによって、その後の処理を分けたいのです。

#!/usr/bin/perl
print <<java;
<SCRIPT language="JavaScript">
<!--

"$w"=screen.width;
//document.write($w);
return $w;

//-->
</SCRIPT>
java

if($w == 800){
 print "800";
}else{
 print "1024";
}

こんな感じで記述したいのですが、うまくいきません。


ちゃいぱ [WriteDate : Mon May 28 12:45:39 2001]

無理ってものです。

ここは、CGIを起動するときに、JSでscreen.widthを抜いて
処理する。

以下は、img要素でのCGI起動サンプルです。

<script type="text/javascript" language="JavaScript">
<!--
document.write("<img src='cgi-bin/access/report.cgi?");
document.write(screen.width);
document.write("x");
document.write(screen.height);
document.write("&amp;");
document.write(document.referrer);
document.write("' width='1' height='1' alt='' />");
// -->
</script>


ひよこ [MAIL] [URL] [WriteDate : Mon May 28 13:07:01 2001]

ちゃいばさんに追補です(^^;

まず、CGIからprint出力された部分はCGI-->ブラウザ ですので
そのままでは取得はできません。
ブラウザ--->CGI、が必要になりますね。
> "$w"=screen.width;
そもそも$wに入っているデーターが展開されるだけですので、初期値0
のままですから、

"0"=screen.width
return 0;

となるだけです。
HTML(Javascript)側でサイズ取得-->CGIへ送信-->CGIで受け取り、という処理の流れが必要です。

ちゃいばさんのスクリプトからCGIでデーターを受け取る
CGI側:(report.cgi)
#!/usr/bin/perl
$cl = $ENV{"CONTENT_LENGTH"};
if( $cl > 0 ){
    read(STDIN, $qs, $cl );
}else{
    $qs = $ENV{"QUERY_STRING"};
}
@param = split(/&/,$qs);
#keyによる引数振り分けは省略しました。例:width=など
#screensize は $param[0]に width x Height の形
#referrer   は $param[1]に リファラー

他の処理

#以下UNIXの場合 img.gifはダミーの透明1x1画像
print "Content-type: image/gif\n\n";
open FH,"<img.gif";
print while(FH);
close FH;


ゴン太 [WriteDate : Tue May 29 11:54:49 2001]

ありがとうございます。
とりあえず、やってみます。
初心者ですみません。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]
ChaichanPAPA's World