こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

JavaScriptの変数をPHP側に渡せない理由

WordPressでサイトを作っている時、画面幅を取得してhtmlを出しわけたい部分がありました。
そこで、JQueryで画面幅を取得してその変数をPHP分で条件分岐したいと思ったのですが、
うまくいかず、クッキーや「wp_is_mobile()」関数で今のところ実現しています。

JavaScriptの変数をPHP側で直接使えないことはわかったのですが、その理由が詳しく知りたいです。
phpファイルに
------------------------------------------------
<script>var w = 600; </script>
<?php if (w <= 600): ?>
600以上だった時の処理
<?php endif; ?>
-------------------------------------------------
みたいな感じで使えたらいいのにとよく思うのですが、
PHPはサーバーサイドスクリプト言語だから、PHPであらかじめ処理されたものがクライアントに送られてきて、その時にJSが読みこまれるから順番的に使えない・・・・ということでいいんでしょうか。
調べようと思っても微妙にずばっとした回答のものがなく、質問しました。
解説サイトのURLとかでもよいので、よろしくお願いいたします。
プログラミングは初心者です。

投稿日時 - 2016-06-30 12:10:14

QNo.9195012

暇なときに回答ください

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

質問者さんのお考えの通り、PHPはサーバサイドで実行され、JavaScriptはブラウザサイドで実行されるからJavaScriptの変数の内容がPHPで使用できません。

ブラウザからサーバに対してページリクエストが送られると、サーバはPHPのプログラムを実行し、その結果をHTML形式でブラウザに返します。
ブラウザは受け取ったHTMLの解釈を行い、JavaScriptがあればプログラムを実行し、その結果を画面に描画します。

従って、JavaScriptが実行されている時には、既にPHPのプログラムは処理を終了し結果を返してしまっています。
JavaScriptの処理結果に基づいてサーバサイドの処理を変えたいのであれば、JavaScriptの実行結果をパラメータとしてサーバにアクセスしなおすか、Ajaxを使ってサーバでの実行結果を受け取ってDOMを書き換えると言った事が必要になります。

投稿日時 - 2016-06-30 12:56:53

お礼

すごくよくわかりました!!
サーバサイドの処理を変える方法も提示してくださって、ありがたいです。
パラメータを使う方法もありましたね・・・なるほどです。
Ajaxは一度やってみたのですが、うまくいかず…きっとどこか間違ってたんだと思います。勉強し直します。
丁寧で完結でわかりやすいご回答、ありがとうございました。

投稿日時 - 2016-06-30 13:07:59

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問