人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: 黒木りも(Rimo)
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Ajax JavaScript PHP 変数
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● あすか
●15ポイント

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

◎質問者からの返答

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


2 ● tezcello
●15ポイント

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

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

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


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


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

◎質問者からの返答

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

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


3 ● Lhankor_Mhy
●28ポイント

たぶん、皆さん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を使うのが無難で簡単です。

◎質問者からの返答

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


4 ● Lhankor_Mhy
●28ポイント

失礼ながら、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は実行終了しています。

◎質問者からの返答

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


5 ● tezcello
●14ポイント

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


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

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

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

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ