10秒目をつむったら…

jQueryのpostからのリクエストをCGIで受信して処理したい
こんにちわ。CGIはまったくの素人に近いですが、よろしくお願いします。
今作成中のページからjavascript(具体的にはjQuery)を使ってpostでリクエストをサーバに送信し、それをCGIで受け取ってカウンタを増やして返す的なことをやろうとしています。
送信側ではとりあえずページをロードしたら(view()で)リクエストを送り(下のtest.cgi)、帰ってきた値を(ID"count1"で)ページにまた反映するという形をとっています。

javascriptのpost部分抜粋
function view() {jQuery.post("../../../cgi-bin/test.cgi",
{"key1":"1"},
function(data){
$("#count1").html(data)
}
);
};

送信はできてるみたいなのですが受け取るCGIが問題で、「フォームからデータを送る場合」というのは山ほど解説があるのですが単純に送られてきたリクエストを受け取るのは下のプログラムではダメみたいです。

CGI部分
#!/usr/bin/perl
my $counter=0;
read( STDIN, $buffer, $ENV{'CONTENT_LENGTH'} );
$counter++;
return("$counter");

当初CGIが必要だとは思わずにいたので、昨日からCGIを勉強し始めたレベルの素人ですが
じっくりと腰をすえて一人で解決する時間もないので、よろしくお願いします。

A 回答 (1件)

Ajaxに値を戻すなら、普通にブラウザへ表示(HTTPヘッダ付き標準出力)するようにします。


例:
return("$counter");
 の行を
 print "Content-type: text/plain\n\n";
 print $counter;
 とします。
ただ、Ajax側のリストをよく見ていないので動くかどうかはやってみてください。

この回答への補足

変えてみましたけどダメでした。
ただ、HTTPヘッダ付き標準出力にするっていう情報がとっかかりになると思うんで
そっちから攻めてみます。ありがとうございます。

補足日時:2010/09/16 11:56
    • good
    • 0
この回答へのお礼

#!/usr/bin/perl
print "Content-type: text/html\n";
print "\n";
$counter=0;
read(STDIN, $data, $ENV{'CONTENT_LENGTH'});

$counter++;
print "$counter<br>\n";

行の順番を入れ替えたら普通にいけました!ありがとうございます!

お礼日時:2010/09/16 14:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報