CGI-BBS > JAVA/JavaScript > JavaScript > JavaScriptとPerlでのデータの受け渡し


カレッヂ
カレッヂ


質問者 かずや  投稿日 4/26(金) 11:11:55
CGIの初心者です。
JavaScriptとPerlで相互にデータの受け渡しは可能でしょうか?
宜しくおねがいします。

$data = "5678";
print <<"EOM";
<SCRIPT LANGUAGE=JavaScript>
<!--
    val pid = "1234" + "$data"; <--- ここでPerlの変数を使用したい。
EOM

open(OUT, "test.txt");
print OUT "\<%=pid %\>";     <--- ここでJavaScriptの変数を使用したい。 
close(OUT);

print <<"EOM";
//-->
</SCRIPT>
EOM

回答者 しあわせのツボ  [削除]  投稿日 4/26(金) 12:17:11
相手の変数を直接参照することはできません。
どんなプログラムでも、自分の変数は自分しか知らない建前になっています。
なので、何らかの方法によって明示的に値を相手に渡してやる必要があります。

しかし、提示されたコードのうち前者は正しく動作すると思います。
Perlからprintした時点で$dataは置き換えられ、JavaScript側にはその結果である5678だけが渡されるためです。

後者については、このままでは動作しません。
適当なinputタグを置き、JavaScript側でそのvalueを操作してからsubmitすれば、通常のform値としてPerlに渡されますから、それを利用すればよいでしょう。
回答者 kiku  [削除]  投稿日 5/8(水) 09:43:36
私も最近、JavaScript&Perlをはじめて、変数の共有をとるために
した対処として、

INPUTタグのHIDDEN変数に値をセットして任意のCGIをActionに設定
してsubmit()を実行させる(POSTメソッドで)

として対処しましたが、その後、クッキー処理をおぼえたら、こち
らの方が楽だと気づいたので、クッキーで共有してます。

JavaScriptからだと、

document.cookie='argName=value;'



Perlからだと、

USE CGI;
$query=new CGI;
$arg=$query->cookie( 'argName' );

でも、クッキーだと渡す値に改行コードが入るとダメなんで、その
辺の処置が必要ですね。(今、その辺でハマってる最中・・)

返信(回答)する


Web裏技