• ベストアンサー

PHPとJavaScriptの連携

PHPとJavaScriptの連携に困っています。以下のようにフラグを立てテキストボックスに代入しています。 frm.newdata.value = '<?php if(条件) $flg = true; echo $newdata; ?>' そしてフラグがてばメッセージを出します。 <?php if($flg) echo 'alert("このデータは登録済みです");'; ?> ところがフラグ($flg)を共有化したいのですが、上下で別物扱いになります。上の処理では代入をしているのでechoでメッセージまでは出せません。 対応策ご存じであれば教えてください。

  • PHP
  • 回答数1
  • ありがとう数9

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

  • ベストアンサー
noname#244856
noname#244856
回答No.1

PHPとJavaScriptの役割をしっかり分けて考えてください。 【PHP】 ・サーバー側で動く ・PHPファイルにリクエストがあると、コードを実行して、出力されたHTMLをブラウザに返す ・リクエストごとに変数の値などは初期化される(状態を保持しない) ・一度HTMLを受信し終えると、(Ajaxを使ってバックグラウンドでやりとりしない限り)更新ボタンを押すまで新たにPHPを実行することは出来ない 【JavaScript】 ・ブラウザ側で動く ・更新ボタンを押したり画面遷移しない限り、変数の内容は保持される ・ユーザがブラウザで表示している間はいつでもコードを実行することが出来る 基本的にPHPとJavaScriptで連携するんだったら「JavaScriptのコードを出力する」のではなく「JSONを出力する」方法の方が一般的であり、使い勝手もいいと思います。 JavaScript(jQuery)からPHPのAPIを利用する http://qiita.com/mpyw/items/62e6e415f86eb30a5ff4

palux124
質問者

お礼

確かにPHPはリクエストごとに変数の値などは初期化されます。 教わったサイトを参考にajax・jQuery・JSONを利用したところやっと思い通りに行きました。 なおJSONに日本語の文字列を渡したところ動作しなくなりましたが、いろいろ試して原因を つきとめました。今はうまくいっています。 ありがとうございます。

関連するQ&A

  • javascriptとphpの連携で疑問

    javascriptの変数をphpに渡すプログラムを、ネットを参考にして次のようなものを作りました。 ●クライアント側 (index.html) <html> <head> </head> <body> <script type="text/javascript" src="j2p.php?parm=1"></script> </body> </html> ●サーバー側 (j2p.php) <?php $parm = $_GET['parm']; header("Content-type: application/x-javascript"); if ($parm == 1) { echo "document.write('1ですよ')"; } else { echo "document.write('1じゃないですよ')"; } ?> 上記は問題なく動作するのですが、サーバー側のプログラムを、次のように 変更し、直接$parmを出力しようとすると何も表示されません。 ●サーバー側 (NG1) <?php $parm = $_GET['parm']; header("Content-type: application/x-javascript"); echo "document.write('<?php echo $parm; ?>')"; ?> どこか、考え方が根本的に間違っているのかも知れませんが、この問題で ずっと悩んでおり、先に進めない状態です。 上記プログラムのおかしな点、改善点など、アドバイスよろしくお願い いたします。

  • javascript関数の戻り値でphpの条件分岐

    こんばんは。 またまたプログラミングで詰まってしまいました・・・。 <?php    echo "<script> funcJS(); </script>"; //javascriptの関数。戻り値true/false    if(funcJS()の戻り値がtrueかどうか){       <~phpの処理~>     } ?> のようなプログラムがあったとして、funcJS()の戻り値の値によって、『phpの処理』を行うかどうかを決定したいのですがそのアルゴリズムが思いつきません。 色々と試行錯誤はやってみて、 (1)phpの変数にfuncJS()の戻り値を格納して、if文で条件分岐  $value = "<script> funcJS(); </script>";   しかし、これは$valueに戻り値を入れることができませんでした。 (2)javascript変数に戻り値を格納して、javascript内のif文で条件分岐 <?php    echo "<script> var value=funcJS(); </script>"; //javascriptの関数。戻り値true/false    echo "<script> if(value == 'true'){ </script>";       <~phpの処理~>    echo "<script> } </script>"; ?>  これも"}"がないと怒られてしまいました。 自分で思いつく限りは試してみたのですが、他に方法が思い浮かばず頭を抱えている状態です。 何か良い方法を知っている方、思いついた方、よろしくお願いします。

  • PHP内でJavaScriptの処理は可能?

    PHP内変数 $flag をJavaScriptで参照し、条件処理を行っています。 JavaScriptの処理は onClick() のタイミングで行います。 ソースの概要は以下のようになります。 1.ログインしているか見る(flagでチェック、1はログイン中…) 2.flagのデータ取得、条件処理。 3-1. flagが1以外なら、true処理 3-2. flagが1なら、false処理  ・  ・ と、こんな処理を行いたいのですが…上手く出来ません。 ソースは以下になります。PHP側の変数 "$flag" までの取得は上手く出来たのですが、 JavaScript側の処理で、つまづいてます…。 で、表題にもあるようにPHP内でJavaScriptの処理は可能でしょうか? アルゴリズム的に、アドバイスなどありましたらご教授ください。 以下が主要部分のソースになります。 <?php echo("<script Language='JavaScript'> "+ "<!-- "+ "function check(){ "+ "if($flag != '1'){ "+ "return true; "+ "} "+ "else{ "+ "header('Location: ./error.html'); "+ "exit(); "+ "return false; "+ "} "+ "} "+ "//--> "+ "</script> "); echo(" <a href='test.html'><img src='botton.gif' onClick='check()' "> アドバイスお願い致します。

    • 締切済み
    • PHP
  • javascriptでわからないことがあります。

    javascriptで判定ボタンを押したらぐ偶数、奇数の判定をするプログラムを作っているのですが数値以外が入力されたら2回目のelse ifで「数値を入力してください」と表示したいのですが調べてもよくわかりません。 また、判定ボタンを押したときにテキストボックスの中が空白であったり、数値以外が入力された場合に「数値を入力してください」と表示しますが続けて偶数、奇数の判定もしてしまうので困っています。 ソースコードです↓ function han2(){ var frm_txt1=document.F1.han1.value; var frm_txt2=parseInt(frm_txt1); if(frm_txt2=="") { alert("数値を入力してください"); } else if() { alert("数値を入力してください"); } if(frm_txt2%2==0) { alert(frm_txt2+"は偶数です"); } else { alert(frm_txt2+"は奇数です"); } } 文章が下手ですみませんがよろしくお願いします。

  • javascriptの記述方法おしえてください。

    以前こちらで質問し自己解決に至ったのですが、 もっと簡単スマートにスクリプトを記述したいのですが、 どのような記述をすれば良いかご教授ください。 //ここから var flg1=1,flg2=0,flg3=0,flg4=0   $(window).on('scroll', function() {     if($('#contents01').offset().top <= $(window).scrollTop() && $('#contents02').offset().top-1 >= $(window).scrollTop()) { if(flg1==0){ $('.nav1').stop(true,true).fadeTo(100,0.3).stop(true,true).fadeTo(500,1); flg1=1,flg2=0,flg3=0,flg4=0 } } if($('#contents02').offset().top <= $(window).scrollTop() && $('#contents03').offset().top-1 >= $(window).scrollTop()) { if(flg2==0){ $('.nav2').stop(true,true).fadeTo(100,0.3).stop(true,true).fadeTo(500,1); flg1=0,flg2=1,flg3=0,flg4=0 } } if($('#contents03').offset().top <= $(window).scrollTop() && $('#contents04').offset().top-1 >= $(window).scrollTop()) { if(flg3==0){ $('.nav3').stop(true,true).fadeTo(100,0.3).stop(true,true).fadeTo(500,1); flg1=0,flg2=0,flg3=1,flg4=0 } } if($('#contents04').offset().top <= $(window).scrollTop() && $('#contents04').offset().top-1+$('#contents04').height() >= $(window).scrollTop()) { if(flg4==0){ $('.nav4').stop(true,true).fadeTo(100,0.3).stop(true,true).fadeTo(500,1); flg1=0,flg2=0,flg3=0,flg4=1 } }   }); //ここまで 上記スクリプトは1部ですが、 このスクリプト部分で、 フラグを立てイベントを実行する、 しないの判別をさせています。 参考までに http://www11.ocn.ne.jp/~website/sample2/index.htm

  • PHP、HTML、JavaScriptで

    初心者で数当てゲーム(プレイヤー2人が互いに4桁の秘密の数字を設定後、それを交互に当てあうというもの。数値とその位置が当たっていれば◎を~個、数値が合っていて位置が違えば○を~個、数値も違えば×を~個表示)を作成中なのですが、現在、◎、○、×の数をそれぞれ表示するところで止まっています。 とりあえず、前段階として◎の数だけを表示するようにプログラミングしようと思っています。 JavaScriptで、秘密の数字とプレイ画面で入力した数字の各桁の数字を照らし合わせ、一致した数だけ◎の個数を表示するためのプログラミング。 本分内のPHPで、if文を使って◎の個数を表示するプログラミングしています。 一応、JavaScript・PHPのプログラミングは下記のようにしています。 <script type="text/javascript"><!-- function check1(){ var countS1="<?php print addslashes($_SESSION['countS1']); ?>"; if(4桁すべてが等しい場合){ countS1=4; }else if(4桁の内3つの数字が等しい場合){ countS1=3; }else if(4桁の内2つの数字が等しい場合){ countS1=2; }else if(4桁の内1つの数字が等しい場合){ countS1=1; }else{ countS1=0; } } //--></script> <?php if($_SESSION['countS1']=4){ echo $_SESSION['countS1']; echo '個'; }else if($_SESSION['countS1']=3){ echo $_SESSION['countS1']; echo '個'; }else if($_SESSION['countS1']=2){ echo $_SESSION['countS1']; echo '個'; }else if($_SESSION['countS1']=1){ echo $_SESSION['countS1']; echo '個'; }else if($_SESSION['countS1']=0){ echo $_SESSION['countS1']; echo '個'; } ?> 例)秘密の数字:1234、プレイ画面の入力値:1268 →◎:2個 という様にしたいのですが、上のままだと入力してからsubmitボタンを押す前から「4個」と表示されてしまいます。 分かりにくくて申し訳ありませんが、よろしくお願いします。

  • PHPとJavaScriptを使ったファイルアップロードについて

    PHPでファイルアップロードで、サイズオーバーなら、HTML側でJavaScriptを使ってアラートを表示する方法がさっぱりわかりません。どうかアドバイスお願いします。 PHP側でphp.iniに指定しているファイルサイズを越えたならば、 if($_FILES['userfile']['error'] == UPLOAD_ERR_INI_SIZE) とやって、HTML側でJavaScriptを使って、「ファイルサイズオーバー」みたいなアラートを表示する。 というやり方です。 どうぞ宜しくお願いします。

    • 締切済み
    • PHP
  • phpソースの中のjavascriptを実行する方法

    現在、AJAXの勉強をしているプログラミング初心者です。 環境はapache2,php5です。 phpのソースの中にjavascriptを埋め込んだものを動作させるには どうしたらよいのかが分かりません、 例えば以下の2つのファイルの場合。 abc.php↓ --------------------------------------------------------------- <html> <head></head> <body> <?php echo "こんにちわ"; ?> <script tyep="text/javascript"> alert("hello"); </script> </body> </html> --------------------------------------------------------------- abc.html↓ --------------------------------------------------------------- <html> <head> <script> try{ var obj= new ActiveXObject("Microsoft.XMLHTTP");} catch(e){var obj=new XMLHttpRequest();} function load(point){ obj.open("POST","abc.php",true); obj.send(null) obj.onreadystatechange=change; } function change(){ if(obj.readyState==4){ document.getElementById("target").innerHTML=obj.responseText; } } </script> </head> <body> <div id="target"></div> <a href="#" onclick="load();">click!</a> </body> </html> --------------------------------------------------------------- としたところ、 abc.phpを実行した場合はabc.phpのjavascriptが実行されてアラートがでるのですが、 abc.htmlからabc.phpにリクエストを出して出力された場合には、 javascriptが実行されずにアラートが出ない。 どうしてこのようになるのでしょうか? また解決策があれば教えてください。 よろしくお願いします。

  • javascriptの変数をPHPの変数で受ける

    下記のようなjavascript において、グローバル変数clicked の値を PHPの変数$clickedで受けたいのですが、どうすれば受け取れるでしょうか? var_dump()してみると、undefinedや、NULLと表示されます。 要は、カレンダーの<td>要素をクリックしたときの日にちの番号を PHPの変数で受けたいのです。 echo '<tr id="calheader" bgcolor="#ffffcc">'; for($i=1; $i<=7; $i++){ echo '<td valign="top" align="center" class="smallText" id="'.$i.'" onclick="pusharea(this);">'.$i.'</td>'; <script language="javascript"> <!-- var clicked; // グローバル変数 function pusharea(obj){ clicked = obj.id; } // --> </script> </head> ----------------------------------------------- <script language="javascript"> alert(clicked); // <?php echo $clicked;?>=clicked; </script> <?php var_dump($clicked); echo '<tr>'; for($i=1; $i<=7; $i++){ /*if($i===$clicked)*/ echo '<td valign="top" height="50" align="center" class="smallText">'.$user.'</td>'; //else echo '<td valign="top" class="smallText">&nbsp;</td>'; } echo '</tr>';

  • PHPでjavascriptのalert文のようにデバッグ

    こんにちは 現在、Flash からPHPにデータを渡して、それがPHPにわたっているかどうかを調べたいのですが、echo文などで出力してもそれがブラウザで表示されないので、どうしたらよいかわかりません。。。orz javascriptのalert文のように警告ウィンドウを利用して変数の値などを調べる関数はあるのでしょうか? また、なにか他によい方法がありましたら教えていただけるとありがたいです。 よろしくお願いします

    • ベストアンサー
    • PHP