• ベストアンサー

javascriptの数値をcgiへ渡したい

javascriptで作られたゲームで、メールでクリアタイムを申告できるようにしたいのですが、うまく作動しません。 jsでゲームクリアの時間を変数 clear_time に格納する(ここまでは問題なく動いています。) クリアと同時に別窓(メールフォーム)が開く。cgiのメールフォームです。 名前などの項目の他に「クリアタイム」という項目<input type="text" name="time" readonly>を作り function clearT(){ document.form1.time.value=window.opner.clear_time;} という関数を<head></head>内に入れ、onload="clearT"で呼び出しましたが、「アクセス許可は拒否されました」とエラーが出ます。 目的としては クリアタイムが簡単には改編されないようにしたい クリアタイムをメールさせたい の2点です。 何かよいアドバイスがあれば是非お願い致します。

  • CGI
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • EUR
  • ベストアンサー率61% (29/47)
回答No.1

親ウインドウの変数に直接アクセスできなかったように思います。 親ウインドウにクリアタイムを返す関数を作成し、それを子ウインドウからアクセスするというのはいかがでしょう? 親ウインドウ、クリアタイムを返す関数 function ReturnClearTime() {   return clear_time; } 子ウインドウ、クリアタイムの格納 function clearT(){   document.form1.time.value = window.opener.ReturnClearTime(); }

jamslot
質問者

お礼

ご回答有り難うございました

その他の回答 (1)

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

><input type="text" name="time" readonly> readonlyでは、valueを変更出来ないのではなかったですか? 変更前に、document.form1.time.readOnly = false; とかしてやる必要があるかと思います。

jamslot
質問者

お礼

ご回答有り難うございました

関連するQ&A

  • 外部JavaScriptがうまく呼び出せません

    お世話になっております。 お分かりになります方いらっしゃいましたら、 ご教授願えますでしょうか? 人材を募集する応募フォームを作っています。 応募フォームの項目にはいくつか必須項目があり、 送信ボタンを押した際、必須チェックをJavaScriptで 行いたいと思っています。 チェックする項目が多数あるので、直接htmlファイルには書き込まず、 外部jsに書き出して、htmlファイル上で呼び出す方法をとる事にしました。 htmlに直接書き込んだ際にはうまく動いたので、 JavaScriptの内容が悪いのではないと思うのですが、 送信ボタンを押しても、必須項目がチェックされず、 そのまま項目が空のメールが届いてしまいます。 以下に該当のコードを記入いたしますので、 原因がお分かりになります方、ご教授頂いてもよろしいでしょうか? ・外部js:oncheck.js ・cgi:send.cgi 【oncheck.js】 <!-- function check(){ ・ (必須項目のチェックを行っています) ・ } //--> 【htmlファイル】 <html> <head> <title>採用情報</title> <script language=JavaScript src="oncheck.js" type=text/javascript> </script> </head> <body> <h3>応募フォーム</h3> <form method="POST" action="send.cgi" name="応募フォーム" onSubmit="return check()"> ・ ・ ・ <input type="submit" value=" 送信 "> <input type="reset" value=" 取消 "> </form> </body> </html> 呼び出し方に問題があるのでしょうか? 宜しくお願い致します。

  • クリアタイムをメールフォームに送って更に改変不可にする方法…??

    ゲームクリアでタイム計算→confirmを使ってクリアタイムのお知らせと管理人にメールするかどうかを確認→OKを選択したら、メールフォームをopen!名前とクリアタイムの項目を入れる(改変不可状態にしたい)…という流れで考えています。confirmまではうまくできるのですが…データのソースは端折ってますので分かりにくいかと思いますが… <head>部分 clear_moji=document.form1.timer1.value; kotae=confirm('クリアタイムは'+clear_moji+'です!'+'\n'+'この結果を管理人にメールで報告しますか?'); if(kotae==true){ mailWin=window.open('mail.html'); mailWin.document.Mform.TIME.value=clear_moji; return false;} <body>部分 <form name="form1"> <input type="button" name="button1" value="ここを押してゲームスタート" onClick="my_reset();mycheck(0);"><br> <input type="text" size="28" name="timer1" value="経過時間が表示されます"> </form> <mail.html>の部分 <FORM action="mailto:xxx@xxx.xx" encType="text/plain" method="post" name="Mform"> <TABLE border=0 width="483" cellspacing="0" cellpadding="0"> <TR> <TD width="80">Clear Time:</TD> <TD width="400"><INPUT name="TIME" size="34"></TD></TR> <TR> <TD width="80">Name:</TD> <TD width="400"><INPUT name="NAMAE" size="34"></TD></TR> </TABLE> </FORM> これで実行するとどうしてもクリアタイムのデータを受け取ってくれません。「オブジェクトではありません」といわれます。どこをどうすればいいのか、わかりません??わかりにくい質問かもしれませんが、どうぞよろしくお願い致します。

  • javascriptからphpの呼び出し

    javascriptの初心者です。宜しくお願い致します。 php5で、開発していますが、javascriptからphpを呼んで、 結果をリアルタイムに画面に表示させる方法が分かりません。 【やりたい事】 1.画面上に、現在の日時を表示させる。 2.5秒毎に、phpを呼び出し(DB接続し結果を取得)して、   その結果を、画面上に表示させる。   ※DBへの接続は、javascript内ではやりたくありません。 下記に、現在時刻を表示するjavascriptがありますが、 この中で、5秒毎に、phpを呼び出したいのですが、 出来るのでしょうか? </head> <script language="Javascript"> <!-- function time_disp() { d = new Date(); document.all.nowdate.value = d.toLocaleString(); window.setTimeout("time_disp()", 1000); } --> </script> <body onload="time_disp();"> <input type="text" name="nowdate" size="30" readonly> <input type="text" name="data1" readonly> ←phpから取得した値1 <input type="text" name="data2" readonly> ←phpから取得した値2 </body>

  • 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の値を 書込みたいです。 ______________ よろしく、お願いします。

  • javascriptを使ったフォームをCGIで取得できない

    フォームに名前、フリ仮名、性別(ラジオボタン)、生年月日(選択メニュー)があり、下記は確認ページで、javascriptを使って、表示されます。でもCGI(以下にあります)では名前のみ取得できあとの値は表示されません。どうすればよいでしょうか ---- <html lang="ja"> <head> <script type="text/javascript"><!-- function Cng(){ var st = window.opener.document.user.name.value; window.document.kuser.kname.value = st; var st1 = window.opener.document.user.furigana.value; window.document.kuser.kfurigana.value = st1; var sex=window.opener.document.all.user.sex if(sex[0].checked) {window.document.kuser.ksex.value ="男性"} else if(sex[1].checked) {window.document.kuser.ksex.value ="女性"} var st11 = window.opener.document.all.user.year.value; window.document.kuser.kyear.value = st11; var st12 = window.opener.document.all.user.month.value; window.document.kuser.kmonth.value = st12; var st13 = window.opener.document.all.user.day.value; window.document.kuser.kday.value = st13;}  //--> </script> </head> <body onLoad="Cng();"> <form name="kuser" action="./5-2.cgi" method="post" enctype="text/plain"> 氏名:    <input type="text" name="kname" value="" size="30"><br><br> ふりがな:  <input type="text" name="kfurigana" value="" size="30"><br><br> 性別:    <input type="text" name="ksex" value="" size="7"><br><br> 生年月日:   西暦 <input type="text" name="kyear" value="" size="10"> 年   <input type="text" name="kmonth" value="" size="5"> 月   <input type="text" name="kday" value="" size="5"> 日<br><br> <tr><td colspan="2" align="right">         <input type="submit" value="送信">   <input type="button" value="戻る"> ----- (CGI) #! c:/perl/bin/perl # フォームデータの取得 if($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else { $query = $ENV{'QUERY_STRING'}; } foreach $pair (split(/&/, $query)){ ($key, $value)=split(/=/, $pair); $value=~tr/+/ /; $value=~s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg; $FORM{$key}=$value; } # サーバー出力 print <<END; Content-type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head><title>ふぉーむでーた</title></head> <body> <h1>フォームデータ</h1> <table border="1"> <tr><th>フォーム要素</th><th>データ</th></tr> END foreach $key (keys %FORM){ print "<tr><th>$key</th><td>$FORM{$key}</td></tr>\n"; } print <<END; </table> </body> ---

  • Javascriptを使った隠しページ探しについて

    隠しページ探しのホームページを作っているのですが、 【index.html】と【fff.js】という2つのファイルで作っています。 【index.html】は <html><head><title>第1問</title><script src="fff.js"></script> </head> <body oncontextmenu="return false;" onkeydown="return false;"> ここに答えを入れて下さい。<br> <form name="ike"> <input type="text" name="nyu"><input type="button" value="回答" onclick="ikou()"> </form> </body></html> 【fff.js】は function ikou(){ var a = document.ike.nyu.value+'9'; if(a == 6){  if(a == 9){ document.write('次は379.htmlです。');  }else{  window.alert('はずれ'); }else{ window.alert('はずれ'); } (次は379.htmlです。の所は実際は暗号化) です。 fff.jsの書き換えを行って解く問題にしようと思っているのですが、エラーになってしまいます。 どこを直せばいいのでしょうか。

  • javascriptからCGIへの値渡し

    cookieは利用しない方向で考えています。 HTML上のdocument.form01.のsubmitが押下されたら一度手入力されたデータ(userinput)を加工し、 別のフォームform02.valueに格納してtest.cgiにPOSTで投げる動作を期待しています。 下記だとページ遷移無しで一時的な格納まで確認しましたが CGIへの送信が機能していないようです。 どの様にすべきでしょうか? [html] <script type="text/javascript"> <!-- function onSubmit() { document.form02.sendform.value = '\"' + document.form01.userinput.value + '\"'; document.form02.submit(); } --> </script> <body> <form name="form02" method="POST" action="test.cgi"> <input type="hidden" name="sendform" value=""> </form> <form method="POST" action="" name="form01"> <input type="text" name="userinput"> <input type="submit" value"送信" onclick="return onSubmit();"> </form> </body> </html>

  • PHPの処理結果をjavascriptで利用する方法

    既に似たような質問も出ていそうで恐縮ですが(一通り目を通したですが、目的とするものは見つけられませんでした)、 PHPとjavascriptのやりとりについて教えていただければ幸いです。 データをフォームなどから受け取る→サーバー側(php)で処理→ 処理した結果の変数をjavascript用の変数として扱うといったこと がしたいのですが、うまくできません。 実際には以下のような形で書いて失敗してしまいました。。。 /*xxx.php*/ <html> <head> <?php $result = $_POST["sentence"]; ?> <script language="javascript"> result = "<?=$result?>"; </script> <script src="xxx.js" type="text/javascript"language="javascript"></script> </head> <body> <form id="sample"> <input type="text" name="sentence"> <input type="submit" value="送信"> </form> </body> </html> /*xxx.js*/ /*xxx.js*/ window.onload = function(){ document.getElementById("sample").onsubmit = function() { var req = createHttpRequest(); req.onreadystatechange = function(){ if(req.readyState==4 && req.status == 200){ alert(result); //PHPの結果を待った後を想定した何らかの処理      //ここでresultを使いたいが、サーバー側への送信前      //の値が入っているだけでonsubmitが反映されていない。 } } req.open("POST","./xxx.php",false); //<-formでくくられた<input type="text">等の部分は反映されない。 req.send(""); } } function createHttpRequest(){ if(window.XMLHttpRequest){ return new XMLHttpRequest(); } else if(window.ActiveObject){ try{ return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { return null; } } } } 私なりに調べたところ 1.PHPとjavascriptは別の所で動作しているので受け渡しは基本不可能 2.PHP側で動的に書き出すことで見せかけることはできる。 var test = <?=$test?>等 3.XmlHttpRequestでphpの処理を結果を待って、変数を利用しようと思ったが、 <form id="form"> <input type="text" name="sentence"> <input type="submit" value="送信"> </form> といった場合に$_POST["sentence"]に値を入れる方法が不明。 また、 multipart/form-dataによる送信など方法が複雑。 responseTextには<html>から</html>まで格納されてしまった。 処理項目ごとに表示用に別にPHPファイル作成だと困る。 4.<form action = "xxx.php" onsubmit=関数名>とすると、 onsubmitで指定した関数が先に呼び出されてから、 xxx.phpの実行が行われるので、サーバー処理を待たずに javascript側が実行されてしまう。 といったことだけは分かりました。 しかし、どのように変更すればうまくいく(もしくは見せかける) ようになるのかがさっぱり分からなかったため、 質問させていただきました。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • javascriptにphpの変数を用いる

    JavaScriptでサブウインドウのフォームから親ウインドウのフォームにデータを送るプログラムを書いています。 親ウインドウのページによって処理を変えているのですが、phpの変数を使うと関数自体がエラーになってしまいます。 どう書くのが正しいのでしょうか?教えてください。 プログラムは下記です。 if(page=="0"){ window.opener.document.form_name.input_name.value=input_data; window.close(); } else{   for(i=1; i<6; i++){     var pagename = "page_"+i;     if(page == pagename){ window.opener.document.<?php echo $_GET[form_name]; ?>.<?php echo $_GET[input_name]; ?>.value=input_data; window.close();   } }

  • HTMLのフォーム名とJavaScriptの関数名

    JavaScriptを勉強し始めたばかりの者です。 submitボタンがonClickされたときにcheckという関数を呼び出しているのですが、 フォーム名とJavaScriptの関数名を同じものにすると、その関数が呼び出されなくなっているようなのです。 ------------------ form.html ----------------------------------------------------- <html> <head> <meta http-equiv="Content-type" content="text/html; charset=euc-jp"> <script type="text/javascript" src="test.js"></script> <link rel="stylesheet" type="text/css" href="style.css"> <title>フォーム</title> </head> <body class="blue" marginwidth="100" topmargin="40" bottommargin="80"> <form name="check" method="post" action="form2.cgi"> <table border="1" cellpadding="7"> <caption>フォーム</caption> <tr> <td>※ID</td> <td><input type="text" name="id"></td> <td>テキストボックス</td> </tr> </table> <br> <input type="submit" name="send" value="送信" onClick="check()"> <input type="reset" name="clear" value="リセット"></td> </form> </body> </html> ------------------ test.js ------------------------------------------------------- <!-- function check() { if( document.check.id.value == "" ){ alert( "※のついている項目は入力必須項目です!" ); } return; } --> ------------------------------------------------------------------------------- 上記のソースで、テキストボックスに何も入力せずに送信ボタンを押してもalertは表示されませんが、 フォーム名あるいは関数名のどちらかをcheck1やcheck_1にすると表示されるようになります。 フォーム名と関数名を同じものにするとalertは表示されません。 フォーム名と関数名の関係はこのようなものなのでしょうか? また上記のソースに原因があるようでしたらお教えください。

専門家に質問してみよう