- ベストアンサー
JavaScriptからPHPの変数に受ける方法
- JavaScriptのグローバル変数をPHPの変数に受ける方法を教えてください。
- カレンダーの<td>要素をクリックしたときの日にちの番号をPHPの変数で受けたいです。
- echo '<td valign="top" height="50" align="center" class="smallText">'.$user.'</td>'; の部分で、<td>要素にユーザー名を表示しながら、日にちの番号を受け取る方法を教えてください。
- みんなの回答 (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で作るだけ。 ということになるかと。
その他の回答 (1)
- sanzero
- ベストアンサー率56% (58/102)
phpはサーバーでの処理、javascriptはクライアントでの処理です。 ブラウザで表示された時点でphpの処理は終了しているので、この場合javascriptから値を渡す意味がありません。 (postやget, cookieで渡すという手もありますが) クリックしたtdの表示を変えたいだけならjavascriptでのみでやりましょう。
お礼
ご回答いただき、ありがとうございました。
お礼
大変詳しいご回答、どうも有難うございました。
補足
superside0 様の(2)の手法で実現したいと思います。 できましたら、ご報告したいと思います^^ どうもありがとうございました。