• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javascriptの変数をPHPの変数で受ける)

JavaScriptからPHPの変数に受ける方法

このQ&Aのポイント
  • JavaScriptのグローバル変数をPHPの変数に受ける方法を教えてください。
  • カレンダーの<td>要素をクリックしたときの日にちの番号をPHPの変数で受けたいです。
  • echo '<td valign="top" height="50" align="center" class="smallText">'.$user.'</td>'; の部分で、<td>要素にユーザー名を表示しながら、日にちの番号を受け取る方法を教えてください。

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

  • ベストアンサー
回答No.2

#1さんのご回答の通り PHPはサーバーでの事前処理、JavaScriptはクライアント(ブラウザ)での処理です。 よって、コーディングの順番に実行される訳ではなく、 また同じメモリ(同じ変数)にアクセスできる訳ではありません。 なので、ブラウザで実行するJavaScript内でclicked = obj.id;  としても PHPでそれをそのまま、if($i===$clicked)なんていうように 使うことはできません。 ★もし、サーバー側でないと処理できない内容であるなら 1) function pusharea(obj)の中で、jQueryの$.ajax でパラメータにobj.idを渡して Ajax手法で画面の推移とは非同期にPHPを実行し、その戻ってきた値で 動的にHTMLを変更するというが簡単だと思います。 ★Ajax的に画面を随時更新したいのではなく、別途 次の画面に進むための submitボタンなりがあって、そのときにクリックしていた場所を一緒に送りたい ということなら 2) function pusharea(obj) のなかで、document.cookie = "clicked="+obj.id +";"の ようにしてcookieに値をセットしておけば、 それをPHP側で $_COOKIE["clicked"] で取り出すことができます。 3) 大きめのデータの場合、cookieは向きませんので、 PHPに送信するためのform内にHiddenデータを JavaScriptで追加するという手法もあります。 この場合、PHP側では $_GET[なんちゃら] か$_POST[なんちゃら]で取り出すことになります。 4) 項目が多いなら、Ajaxとセッションを使ったほうが簡単かもしれません。 (Ajaxは非同期なので復数のAjaxの実行が並行することがあるので  サーバー側でセッションファイルをロックしないようにするテクニックが必要なようです) 5) 画像なりテキストをクリックした場所でなくて、 チェックボタンなり ラジオボタンなりを 設置しほうが、利用する側にも どれを選択しているかが、わかりやすいかも。 ★サーバー側のPHPでないと処理できない内容でないなら 6) PHPでなく、JavaScriptで作るだけ。 ということになるかと。

beterugius
質問者

お礼

大変詳しいご回答、どうも有難うございました。

beterugius
質問者

補足

superside0 様の(2)の手法で実現したいと思います。 できましたら、ご報告したいと思います^^ どうもありがとうございました。

その他の回答 (1)

  • sanzero
  • ベストアンサー率56% (58/102)
回答No.1

phpはサーバーでの処理、javascriptはクライアントでの処理です。 ブラウザで表示された時点でphpの処理は終了しているので、この場合javascriptから値を渡す意味がありません。 (postやget, cookieで渡すという手もありますが) クリックしたtdの表示を変えたいだけならjavascriptでのみでやりましょう。

beterugius
質問者

お礼

ご回答いただき、ありがとうございました。

関連するQ&A