Javascriptの変数をPHPの変数に渡したいのですが、どのような方法があるでしょうか?


http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1045993005
実際にやりたいことは、この質問に近いのですが、Ajaxを使う方法でなくても良いです。
どのようにすればいいでしょうか?いくつかやり方を示していただけるとより嬉しいです。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/05/14 01:00:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:asuka645 No.1

回答回数856ベストアンサー獲得回数97

ポイント15pt

jQueryのAjaxリクエストを使えば簡単にできます。

id:rimokuroki

すみません、その方法を…

2011/05/07 13:16:00
id:tezcello No.2

回答回数460ベストアンサー獲得回数69

ポイント15pt

子ウィンドウをオープンする際に、必要なクエリをURLに付加しておけば様々な値を渡せます。

受け取ったスクリプトで、付加された値を処理し、適切なところへ保存すればよいでしょう。

(未確認ですが、SESSION でもいけるのではないかと)


親ウィンドウ側のスクリプトが、保存された値を読み取るようになっているのが前提ですが、子ウィンドウから親ウィンドウのリロードをさせる事も送信させる事も可能なので。


また、「PHPの変数に渡す」の意味が、PHPへ何らかの値を渡すという事なら、子ウィンドウでの処理が処理が済んだら、親ウィンドウのフィールドに(またはフィールドを新設して)値を入れる事で対応可能でしょう。

id:rimokuroki

ありがとうございます。いろんなやり方があるのですね〜。

一番やりやすいのはAjaxなんでしょうか?引き続き募集しますので、よろしくお願いします。

2011/05/07 13:38:28
id:Lhankor_Mhy No.3

回答回数814ベストアンサー獲得回数232

ポイント28pt

 たぶん、皆さんAjaxの回答をすると思いますので、それ以外の方法で簡単なサンプルを。

 

 JavaScript(HTML)側

<script>
function test(str){
  var img = document.createElement('img');
  img.src = '/test.php?test=' + str;
  document.body.appendChild(img);
}
</script>
<a href="javascript:test('Hatena!')">click me !</a>

 PHP側

<?php
header("Location: https://chart.googleapis.com/chart?chst=d_bubble_icon_text_small&chld=info|bb|{$_GET['test']}|FFFFFF|000000");

 

 アクセスカウンタのようなコールバックが必要ないコードなら上記のようなAjaxを使わない方法でも問題ありません。

 

 不要かもしれませんが、一応解説を。

 JavaScriptでimg要素を作成し、受け取った引数をsrc属性のURLのパラメータとしてDOM操作でbody要素に追加しています。

 そうすると、ブラウザは画像を表示しようとしてサーバにリクエストをするので、サーバのPHPでは$_GETでパラメータを受け取ることができるわけです。(ここでは受け取った文字列を利用してリダイレクトしています)

 ただ、コールバック、つまりJavaScript→PHPの後にPHP→JavaScriptでデータを受け取るためには、Ajaxを使うのが無難で簡単です。

id:rimokuroki

ありがとうございます。引き続きAjaxの方法も募集しますので、よろしくお願いします。

2011/05/07 13:30:29
id:Lhankor_Mhy No.4

回答回数814ベストアンサー獲得回数232

ポイント28pt

 失礼ながら、id:asuka645さんが示したページを読んでも理解できないなら諦めた方がいいと思います。おそらくあなたの手には余るのではないかと。その高橋さんのAjax解説はとても分かりやすく、私も以前読んで勉強させていただきました。

 

 一応サンプルを示します。

 

JavaScript(HTML)側

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script>
google.load('jquery', '1');
function test(str){
  $.get("test.php",
    { test: str },
    function(data){
      alert(data);
    }
  );
}
</script>
<a href="javascript:test('Hatena')">click me !</a>

 PHP側

<?php
echo "Hi, {$_GET['test']} !";

 

 一応解説します。

 ↓jQueryを読み込み。

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script>
google.load('jquery', '1');

 ↓サーバーにリクエストしている部分

  $.get("test.php",
    { test: str },
    function(data){
      alert(data);
    }
  );

 ↓この行のtest.phpがPHPファイルのURI

  $.get("test.php",

 ↓この行は、PHPの$_GETに渡す変数です。複数指定する場合は{hoge:'a', fuga:'b'}とか指定してください。

    { test: str },

 ↓この部分がいわゆるコールバック関数。PHPからの応答が返ってきた時にどのように処理するかを書きます。ここではアラートを出して内容をテキストとして表示しています。

    function(data){
      alert(data);
    }

 

 一応PHPの解説もしておきます。

 ↓JavaScriptからのデータは$_GET['****']で受け取ります。ここでは受け取った文字XXXXに"Hi, XXXX !"と返しています。

<?php
echo "Hi, {$_GET['test']} !";

 

 気をつけるのは2点

・日本語を扱う場合はPHP側の文字コードに気をつけて下さい。UTF-8を使うこと。

・非同期通信なので処理の順番に気をつけて下さい、この場合、$.getの結果が帰ってくる前に関数testは実行終了しています。

id:rimokuroki

ありがとうございます!大変良くわかりました。

2011/05/07 17:40:37
id:tezcello No.5

回答回数460ベストアンサー獲得回数69

ポイント14pt

コメントが書き込めないので、再度解答します。


僕は、こちらのページを参考にしてます。

http://allabout.co.jp/gm/gc/24097/

http://jsgt.org/mt/archives/01/000409.html

jQuery よりはシンプルで軽量でいいんじゃないかと思っています。

id:rimokuroki

ありがとうございます!参考になります〜

2011/05/09 21:25:15

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません