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

このQ&Aのポイント
  • JavaScriptの変数をPHP側で直接使えない理由について詳しく知りたいです。
  • PHPはサーバーサイドスクリプト言語であり、PHPで処理されたものがクライアントに送られるため、JavaScriptの変数をPHP側で直接使うことはできません。
  • この理由に関する解説サイトのURLなどを教えていただきたいです。
回答を見る
  • ベストアンサー

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とかでもよいので、よろしくお願いいたします。 プログラミングは初心者です。

  • bfkk
  • お礼率88% (31/35)
  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5070/13246)
回答No.1

質問者さんのお考えの通り、PHPはサーバサイドで実行され、JavaScriptはブラウザサイドで実行されるからJavaScriptの変数の内容がPHPで使用できません。 ブラウザからサーバに対してページリクエストが送られると、サーバはPHPのプログラムを実行し、その結果をHTML形式でブラウザに返します。 ブラウザは受け取ったHTMLの解釈を行い、JavaScriptがあればプログラムを実行し、その結果を画面に描画します。 従って、JavaScriptが実行されている時には、既にPHPのプログラムは処理を終了し結果を返してしまっています。 JavaScriptの処理結果に基づいてサーバサイドの処理を変えたいのであれば、JavaScriptの実行結果をパラメータとしてサーバにアクセスしなおすか、Ajaxを使ってサーバでの実行結果を受け取ってDOMを書き換えると言った事が必要になります。

bfkk
質問者

お礼

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

関連するQ&A

  • Ajax以外で、JavaScriptからPHPへ渡

    Ajax通信以外で、JavaScriptからPHPへ変数(配列)を渡したいのですが、 可能でしょうか? 下記のような状態の時、js変数dataを、Ajax通信を利用せずにPHP変数として取得したいのですが、どうすればよいでしょうか? JavaScript関数の中で、PHPフォームの送信ボタンをクリックさせる(ような)ことは出来ないのでしょうか? <button type="button" onclick="testsubmit();">送信</button> <script> function testsubmit(){  js処理;  var data = ★★; } </script> ■最終的にやりたいこと ・ボタンをクリックしたら、js処理で取得したjs変数(配列)を、Ajax通信を利用せずに、PHP変数として受け取りたい ・それを出来れば1クリックで処理したい

  • WordPressでjQuery-UIの使い方

    WordPressでjQuery-UIの使い方を教えてください。 現在、WordPressで作ったサイトにフローティングメニューを取り入れたいと思っています。 フローティングメニューを入れるにあたり、jQuery-UIを読み込まなければならないのですが ちゃんと読み込まれていないようです。 WordPressではなくテストでサイトを作り、読み込ませるとちゃんと動作するので、 WordPress特有の問題かと思います。 WordPressでjQuery-UIを読み込ませる方法を教えてください。 下記に参考にしたサイトと、ソースを記述しました。 -------WordPressのヘッダ内の記述と参考にしたサイト------- <?php wp_deregister_script('jquery.ui.core.min'); wp_enqueue_script('jquery.ui.core', get_bloginfo('template_url') . '/js/jquery.ui.core.js'); ?> wp_deregister_scriptでWordPressのjquery.uiを見に行かないようにして、 wp_enqueue_scriptでダウンロードしてきたUIを見に行くようにしてあります。 参考にしたサイト(jQuery-UI) http://d.hatena.ne.jp/deeeki/20090907/wp_enqueue_jquery_ui フローティングメニューについて参考にしたサイト http://www.skuare.net/test/jScrollFollow.html

    • ベストアンサー
    • PHP
  • PHPでレイティングバーの値を取得

    下記のようなJQuery スクリプトにおいて、 レイティングバーの値を、PHP変数に取得するには どうすればいいのでしょうか。ご指導お願い致します。 ちなみに、 $manzokudo = $_POST['rating']; var_dump($manzokudo); で、ダンプしたところ、中身がNULLでした。 【detail.php】 <link rel="stylesheet" type="text/css" href="jquery.rating.css"> <script type="text/javascript" src="jquery-2.1.3.js"></script> <script type="text/javascript" src="http://code.jquery.com/jquery-migrate-1.1.0.js"></script> <script type="text/javascript" src="jquery.rating.js"></script> <script type="text/javascript"> $(function () { // レーティングバーを有効化 $('.starbar').rating({ cancel: '消去', // 「キャンセル」ボタンのテキスト // ★アイコンをクリックした時の処理 callback: function(value){ // detail.phpに対してレイティングバーの値を送信 $.post( 'detail.php', { rating: value }, function(){ window.alert('「' + value + '」をつけました。'); } ); } }); }); </script> </head> <body> <?php $_POST[] ?> </body> </html>

  • javascriptとphpの変数のやり取り

    ある該当ページ(mtの検索結果ページ)が拡張子をphpにできず、 <script src=hogehoge.php></script>でphpファイルを読み込んで、 実行したいと思います。 phpを使用している理由はある変数を取得したいのですが、 今回は関係ないので割愛します。 ■以下ソース ・該当ページ(mt-search.cgi) <html> <head> <title>hoge</title> <script type="text/javascript" src="/hogehoge.php"></script> </head> <body> <script> document.write("<p>"+str+"</p>"); </script> </body> </html> ・phpファイル(hogehoge.php) <?php if(test == test){ $str = "成功" }else{ $str = "失敗"; } ?> <script type="text/javascript"> <!-- var str= "<?php echo $str?>"; --> </script> このようにしているのですが、 うまく出力されません。 php側の出力はうまくいっているようなのですが、 ブラウザ側の方でちゃんと変数がわたっていないようです。 画面は真っ白です。 ご教授お願いいたします。

  • jqueryとphpで変数をやり取りしたい

    jqueryとphpで変数をやり取りしたい こんばんは 現在jqueryとphpのやり取りを模索しています phpで定義した変数(仮に$dataPHPとして)に文字列を入れておきます それを外部のjqueryにどうにかして渡す(この『渡す』方法が分からない・・・) そして、jquery内で受け取った変数から色々処理をして、最終的に今度は別の変数(また仮に$dataJQUERYとします)をPHPに渡します PHPではその変数を受け取り、以降の処理を進めていく、というものです 『jquery php データ 渡す』などで調べてみると、$.ajaxや$.postを使うとデータを渡せるとあり、実際にサンプルプログラムを動かしてみました しかし、javascriptからphpにデータを送ることはできても、コールバック関数というものでjavascriptに返ってきたり、innerHTMLで直接埋め込んでしまったりと、純粋に変数として保持できる方法が見つかりませんでした jqueryとphpで自由に変数を渡しあえる方法はないのでしょうか? 現在の環境はjquery1.4.2、php5、apache2、IE7です どうぞご教授願います

  • Javascriptの変数をPHPに渡したい

    環境  サーバLinux、Apache2.0.47、PHP4.3.2で使用しています 質問  リンク元の取得のためgetenv("HTTP_REFERER")を使っていますが情報が取得できません。  クライアント側のファイアウォール(ノートンなど)が無効になっているときにしか情報が取得できませんでした。  Javascriptのdocument.referrerを使ったところ、ファイアウォール関係なく情報が取得できました。  ログ保存のためにPHPの変数にdocument.referrerを渡したいのですがどのようにすればよいのでしょうか?  下のように書いたところブラウザには正常に表示されましたが、  ログはJavascriptの制御文そのものが保存されました。  $link="<SCRIPT language='JavaScript'><!--    document.write(document.referrer);    --></SCRIPT>"; よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpから値をとってきて変数に格納するには?

    phpから値をとってきて変数に格納するにはどうすればいいのでしょう? ちなみにjavascriptはほとんどさわったことのない初心者です。 やりたいことを具体的に説明します。 p.php 「 <?php yy = "test string"; //?(1) ?> 」 js.html 「 <script language="javascript"> var xx; //?(2) </script> 」 最終的に、php内の変数「yy」の内容をjavascriptの変数「xx」にいれたいのです。 よろしくお願いします。

  • PHPから環境変数'PATH'が使えない

    WordPressの「WP Video Posts」というプラグインで標記の問題が発生しています。 プラグインの中で、ffmpegのインストール状況をチェックする関数が exec("which ffmpeg",$output,$status); を実行し、ffmpegのフルパスを取りたいらしいのですが、 このとき$status=1(異常)になって、$outputが空になります。 試しに exec("which ffmpeg 2>&1",$output,$status); と書いたところ、$outputに「which: no ffmpeg in ((null))」が返ってきて、 PATHが通っていないことに気づきました。 ちなみに、同じスクリプトをコンソールから叩いた場合には、 正しい結果「/usr/bin/ffmpeg」が取得できます。 Webから実行した時だけ、上手く行きません。 (Webとコンソールは同じユーザーです) 以下、サーバーの情報です。 CentOS 6.4 PHP 5.3.3 nginx 1.4.2 php-fpm WordPress 3.9.2 WP Video Posts 3.1.5 nginxの実行ユーザー:nginx php-fpm(PHP)の実行ユーザー:nginx 環境変数「PATH」さえ通れば、問題が解決するのではないかと思っています。 開発方法をご存知の方、ご教示ください。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • HTMLをWordPress化 CSSをどこに?

    HTMLをWordPress化にするための勉強をしています。 HTML側 CSS ヘッダー内 <link rel="stylesheet" href="css/test.css"> <link rel="stylesheet" href="css/test2.css"> JS ヘッダー内ではなく一番下</body>の前に配置 <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script> <script src="js/test1.js"></script> <script src="js/test2.js"></script> ★これをfunctions.php に記述するにはどうすれば良いのでしょうか? function sample_scripts() {   // CSSの読み込み   wp_enqueue_style( 'jdsa-style', get_template_directory_uri().'/css/test.css', array(), '1' );   wp_enqueue_style( 'jdsa-style', get_template_directory_uri().'/css/test2.css', array(), '1' );   // jqueryの読み込み wp_deregister_script( 'jquery' ); wp_enqueue_script( 'jquery', get_template_directory_uri().'https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js', array(), '1.10.3', true );   // サイト内のjsの読み込み   wp_enqueue_script( 'jdsa-script', get_template_directory_uri().'/js/test1.js', array(), '1', true );   wp_enqueue_script( 'jdsa-script', get_template_directory_uri().'/js/test2.js', array(), '1', true ); }//ここまで 結果 ヘッダー内にtest.cssのみ記載、test2.cssは記載していない。 jsはどこにも記載していませんでした。 どこが間違っておりますか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHPとJavaScriptを足してビルドできる?

    PHPとビルドについて教えてください <質問背景> ・jQueryライブラリを修正しようと思ったら、実際に呼び出しているファイルは「jquery.★★.min.js」だけだった ・ダウンロードしたファイルの中には、「build.php」「build.sh」がある <質問> ・ビルドした結果が、「jquery.★★.min.js」なのでしょうか? ・PHPでビルドって出来るのでしょうか? コンパイラとか不要? ・PHPで「PHP」をビルドしているのでしょうか? それとも、PHPで「JavaScript」をビルドしているのでしょうか? あるいは、PHPで「PHP」と「JavaScript」を足して、ビルドしているのでしょうか? ・「build.php」と「build.sh」で連携して、ビルドファイルを作成しているのでしょうか? ・ビルドするには、「.sh」が使える環境(Linux?)が必要なのでしょうか? ・何のためにビルドするのでしょうか? 容量を圧縮して、処理を早くするため? ・ビルドしなくても、ビルド前の必要ファイルを読み込めば、利用できるのでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう