• 締切済み

JSの値をPERLで受け取りたいんですが

JSの値をPERLで受け取りたいんですが 例えばCGIのファイルで my $value;     print "<script type=\"text/javascript\">";     print "hoge();"; #このメソッドの値を$valueに受け取りたい print "</script>"; JS側ではまあ function hoge(){ return Value; } みたいな事って出来ないんでしょうか? メソッドのところで  print $value="hoge();"; とか   print "$value=hoge();"; とかやってもできません。

みんなの回答

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

かなり乱暴な説明ですが・・・ 1)ブラウザがサーバにurlをリクエストする。 2)サーバはそれがCGIなら実行してその結果出力(printされたもの)を、通常のHTMLならそのファイルを読み出してブラウザに送り返す。 3)ブラウザは受け取ったデータを表示、Javascriptがあればそれを実行する。 実行する場所・タイミングがまるで違うので質問のような事は不可能です。 Javascriptでサーバにデータを送信する処理、CGIでそれを受け取る処理を作る必要があります。 「Ajax」について調べてみてください。(その前にCGI、Javascriptというのがどのような仕組みであるかの基本を理解しないとAjaxもよくわからんと思うけど)

cm_12x
質問者

お礼

そうですね、これはメインの処理とだいぶ関係ないところで、 ちょっとしたパラメタを更新されたページに反映したかっただけなので、考えてるうちになんか訳わからない発想になってしまったかもしれません。 基本コンポーネントやismap等の値をサーバに送ってサーバが表示するhtmlとあわせて実行するという事ですよね!? そのhtmlとあわせて書かれていたJSをブラウザが実行する感じだと思うんですが、単に関係ない表示に関するパラメタを更新後に渡したいんですが、、 もしいい解説サイトがあれば教えていただきたいんですが。。 あと<input でtypeをhiddenにしてvalueにパラメタを入れて渡すとかを思いついたのでやってみます。 ありがとうございました。

関連するQ&A

  • JavaScriptの値を、cgiに渡す方法を教えてください。

    JavaScriptの値を、cgiに渡す方法を教えてください。 jsファイルの変数に、テキストボックスの入力値が入っています。 それを、cgiに渡して、その変数の値を、ファイルに 書込みたいと考えています。 __test.html_________ <head><script src="keep.js"></script></head> <form name="f1" action="keep.js"> <input type="text" name="a_text"> <input type="button" value="クリック" onclick="keep()"> </form> _________________________ ___keep.js_______________ function keep() { var a_text = document.f1.a_text.value; ■この変数「a_text」をcgiファイルに渡したいです。 } __________________________ __●.cgi_______________ ■なんだかの方法で、上記keep.jsの変数、a_textを取得して、 この●.cgiでファイルをopenして、a_textの値を 書込みたいです。 ______________ よろしく、お願いします。

  • $.postとPerlのデータ受け渡しについて

    現在、 $.postを使ってPerlにリクエストを送り、帰ってきた値を表示するという事をしたいのですが、Internal Serverエラーとなりますが、どこにエラーがあるのかがわからない状態です。 実行権限などは与えています。 以下に書いたプログラムを貼りますので、間違いがありましたら是非教えていただきたいです。 HTML index.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Test Page</title> <script type="text/javascript" src="../lib/jquery/jquery-1.3.2.js"></script> <script type="text/javascript" src="./JS/test.js"></script> </head> <body> <form id="form01"> <input type="text" name="title" id="title01" value="post"><br> <input type="button" value="post" onClick="getValue()"> </form> <div id="res_title"></div> </body> </html> JavaScript test.js function getValue(){ //フォームのデータ取得 var pos_title = $('#title01').attr('value'); //var comment = $('#comment').attr('value'); //フォームデータのPOST送信+コールバック $.post("./cgi-bin/post.pl", {"title" : pos_title}, disp); } function disp(data){ $('div#res_title').html(data); } Perl post.pl #!/usr/bin/perl -w use strict; use warnings; my $formdata; if ($ENV{'REQUEST_METHOD'} eq "GET") { $formdata = $ENV{'QUERY_STRING'}; } else { read(STDIN, $formdata, $ENV{'CONTENT_LENGTH'}); } return $formdata;

  • PHPでレイティングバーの値を取得

    下記のようなJQuery スクリプトにおいて、 レイティングバーの値を、PHP変数に取得するには どうすればいいのでしょうか。ご指導お願い致します。 ちなみに、 $manzokudo = $_POST['rating']; var_dump($manzokudo); で、ダンプしたところ、中身がNULLでした。 【detail.php】 <link rel="stylesheet" type="text/css" href="jquery.rating.css"> <script type="text/javascript" src="jquery-2.1.3.js"></script> <script type="text/javascript" src="http://code.jquery.com/jquery-migrate-1.1.0.js"></script> <script type="text/javascript" src="jquery.rating.js"></script> <script type="text/javascript"> $(function () { // レーティングバーを有効化 $('.starbar').rating({ cancel: '消去', // 「キャンセル」ボタンのテキスト // ★アイコンをクリックした時の処理 callback: function(value){ // detail.phpに対してレイティングバーの値を送信 $.post( 'detail.php', { rating: value }, function(){ window.alert('「' + value + '」をつけました。'); } ); } }); }); </script> </head> <body> <?php $_POST[] ?> </body> </html>

  • javascriptのクラスの処理について

    javascriptのクラスを利用した処理で分からない所がありますので 教えて下さい。 最初に 下記の「1.の方法」でhtml側にjavascriptを呼び出す記述を して動かしていましたが、「2.の方法」に変更しなければならなく なりました。 ところが、「2.の方法」でやりますと、メインのhtml側がフリーズ してしまいます。 調べてみますと、メモリーを食いつぶしていますので、何か永久ループの ような状態に陥っているようです。 こような場合、何かやり方がおかしいのでしょうか? ご存知の方がいらっしゃいましたら、ご教授お願いいたします。 === 1.の方法 ===(問題なく動きます)================= ---ソース(index1.html) <script type="text/javascript" src="js1.js"></script> <script type="text/javascript"> hoge.create( abc, "def"); </script> ---ソース(js1.js) var hoge = {   xxx: ~~,   yyy: ~~   create: function(val1,val2) {     ~略~ }; === 2.の方法 ===(フリーズしてしまいます)=========== ---ソース(index2.html) <script type="text/javascript" src="js2.js"></script> <script type="text/javascript"> hoge_sub(); </script> ---ソース(js2.js) function hoge_sub(){   hoge.create( abc, "def"); } var hoge = {   xxx: ~~,   yyy: ~~   create: function(val1,val2) {     ~略~ };

  • 呼出したjsファイル内で他jsファイルを呼出したい

    hoge.htmlに ----------------------------------------------- <script type="text/javascript" src="piyo.js"></script> ----------------------------------------------- を記述してpiyo.jsを読み込ませました。 この状況で、piyo.js内でfuga.jsを読み込むにはどのような記述をすればよいでしょうか?

  • フォームのname値を配列にしてJavaScriptでフォームのチェックをする方法

    JavaScriptでフォームの半角数字のチェックをしたいのですが、 form内容をCGI(PHP)に渡すためname値を配列にしないといけないのですが、 以下のスクリプトだとエラーが出てしまいます。 *実際はif(isNaN~)と<input~>をループで書き出しており、行数が不特定なので それぞれ別のname値を使うことができない状態です。 <script language="JavaScript"> function check() { if(isNaN(document.form1.hoge[0].value)){ alert("値は半角数字で入力してください。"); return(false); } if(isNaN(document.form1.hoge[1].value)){ alert("値は半角数字で入力してください。"); return(false); } return(true); } </script> <form method="post" action="xxx.cgi" onSubmit="return check()" name="form1"> <input type="text" name="hoge[0]"> <input type="text" name="hoge[1]"> </form> 特にCGIに渡す必要がなければ <input type="text" name="hoge"> <input type="text" name="hoge"> としてやればチェックができるのですが、どうしても次の 処理があるためname値を配列にする必要があります。 解決方法がわかる方がおられましたらご教授ください。 以上よろしくお願いいたします。

  • <head>外での、外部css、外部jsの読み込み

    基本的な質問で失礼します。 <head>内ではなく、たとえば<body>内に外部cssと外部jsを読み込む際、 今まで、以下のようにスクリプトを書いて読み込んでおり、うまくいっていました。 <script type="text/javascript"> document.write('<link rel="stylesheet" type="text/css" href="hoge.css" media="screen,print">'); document.write('<script src="hoge.js" type="text/javascript"></script>'); </script> ところが、あるサイト作成時、上記スクリプトでは効かなくなってしまいました。 (HTML 4.01 Transitional) そこで、<head>内で書くように、以下のように記述したら、うまく機能しました。 <link rel="stylesheet" type="text/css" href="hoge.css" media="screen,print"> <script type="text/javascript" src="hoge.js"></script> 自分の中では、この記述は<head>内で書くときであって、<head>外ではうまく読み込めないと思っていたのです。 そもそも、<head>外なのに、このような書き方をしてよいものでしょうか? まぁ、きちんと読み込めていて、動きも期待通りだから良いのでしょうが… 皆さん、どのように読み込んでいるのかなっと思い質問してみました。 どうぞ宜しくお願いいたします。

  • javascriptの中で、perlのコマンドを実行できないか。

    javascriptの中で、perlのコマンドを実行できないか。 java:クライアント側の処理。 perl(cgi):サーバ側の処理。 なので、愚問かもしれないのですが、 ↓====================================== <script language="JavaScript"> <!-- function aaa(){  : EOM (この間に、perlの処理) print <<EOM; : } // --> </script> ↑====================================== と言った感じで、javascriptのfuncitonの中で、 perlを使って、データベースへの操作をしたいのですが、 やはり、無理でしょうか。 あるいは、代案などあればご教授願えませんでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • shadowbox.jsについて

    shadowbox.jsとslimbox.jsを併用したいと考えています。 もともとshadowbox.jsをPrototypeで使用し、HTMLを呼び出すのに使用していたのですが、 画像のライトボックス表示にslimbox.js(jquery使用)を使いたいと思い、 両方とも記述したらshadowboxの方が正常に動作しなくなりました。 何か解決策はありますでしょうか。 非常に困っています。お願いします。 ちなみに以下の様なコードをhead内に記述しております。 <script src="../../common/js/prototype.js" type="text/javascript"></script> <link rel="stylesheet" type="text/css" href="../../common/js/shadowbox/shadowbox.css"> <script src="../../common/js/shadowbox/shadowbox.js" type="text/javascript"></script> <script type="text/javascript">Shadowbox.init();</script> <link rel="stylesheet" type="text/css" href="shadowbox.css"> <script type="text/javascript" src="shadowbox.js"></script> <script type="text/javascript">Shadowbox.init();</script> </script> <link href="../../common/css/slimbox/slimbox.css" type="text/css" rel="stylesheet" media="screen" /> <script type="text/javascript" src="../../common/js/jquery.js"></script> <script type="text/javascript" src="../../common/js/slimbox.js"></script> <script type="text/javascript"> //slimbox $(document).ready(function() { $('a[rel*=lightbox]').slimbox(); }); </script>

    • ベストアンサー
    • CSS
  • 読み込み後発動するjsを他のjsに連携させたい

    javascriptを使ってiPhoneアプリを作っています。 サーバー側のmysqlと交信させるようにしているのですが、下記のように単純にpostすると、post後に表示されるのはサーバー側のhoge.ne.jp/usr_in.phpです。 【iphone側 index.html】 <script type="text/javascript" src="js/jquery.js"></script> <form name="form1" id="form1" method="POST" name="form1" action="https://hoge.ne.jp/usr_in.php"> <input type=“hidden” name="myname" value="" /> <input type="hidden" name="pass" value="" /> <button class="button8">購入</button> </form> そこで、下記のような【遷移JS】を用い、ボタンを押すと、サーバー側にpostしたあと、【iphone側のfinish.html】に遷移するようにしました。ここまではうまくいきました。 【遷移JS】 <script type="text/javascript" src="js/jquery.js"></script> <script> jQuery(function($) { $('#form1').submit(function(event) { // HTMLでの送信をキャンセル event.preventDefault(); // 操作対象のフォーム要素を取得 var $form = $(this); // 送信ボタンを取得 // (後で使う: 二重送信を防止する。) var $button = $form.find('button'); // 送信 $.ajax({ url: $form.attr('action'), type: $form.attr('method'), data: $form.serialize() + '&delay=1', // (デモ用に入力値をちょいと操作します) timeout: 10000, // 単位はミリ秒 // 送信前 beforeSend: function(xhr, settings) { // ボタンを無効化し、二重送信を防止 $button.attr('disabled', true); }, // 応答後 complete: function(xhr, textStatus) { // ボタンを有効化し、再送信を許可 $button.attr('disabled', false); }, // 通信成功時の処理 success: function(result, textStatus, xhr) { // 入力値を初期化 $form[0].reset(); // location.href = "finish.html"; // }, // 通信失敗時の処理 error: function(xhr, textStatus, error) { alert('購入できませんでした。再度お試しください'); } }); }); }); </script> <form name="form1" id="form1" method="POST" name="form1" action="https://hoge.ne.jp/usr_in.php"> <input type=“hidden” name="myname" value="" /> <input type="hidden" name="pass" value="" /> <button class="button8">登録</button> </form> 次に、このmysqlへの会員登録機能を自動化するために、読み込み後に自動的にsubmitされる【自動実行JS】を組み、<body onLoad="loadHello()"></body>で囲んだ後、<form></form>の最底辺に挿入しました。 【自動実行JS】 <SCRIPT language="JavaScript"> function loadHello(){ document.form1.submit(); } </script> 結果、自動登録機能は機能するのですが、サーバー側のhoge.ne.jp/usr_in.phpが表示されてしまい、【iphone側のfinish.html】に遷移してくれません。 bodyをloadした後、【自動実行JS】が実行された時に、【遷移JS】にトスされずにそのまま送信されてしまうようです。どこをどう修正すればいいかご教授願います。