- ベストアンサー
javascriptとphpの連携で疑問
javascriptの変数をphpに渡すプログラムを、ネットを参考にして次のようなものを作りました。 ●クライアント側 (index.html) <html> <head> </head> <body> <script type="text/javascript" src="j2p.php?parm=1"></script> </body> </html> ●サーバー側 (j2p.php) <?php $parm = $_GET['parm']; header("Content-type: application/x-javascript"); if ($parm == 1) { echo "document.write('1ですよ')"; } else { echo "document.write('1じゃないですよ')"; } ?> 上記は問題なく動作するのですが、サーバー側のプログラムを、次のように 変更し、直接$parmを出力しようとすると何も表示されません。 ●サーバー側 (NG1) <?php $parm = $_GET['parm']; header("Content-type: application/x-javascript"); echo "document.write('<?php echo $parm; ?>')"; ?> どこか、考え方が根本的に間違っているのかも知れませんが、この問題で ずっと悩んでおり、先に進めない状態です。 上記プログラムのおかしな点、改善点など、アドバイスよろしくお願い いたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
echo "document.write('".$parm."')";
その他の回答 (2)
- maenet1972
- ベストアンサー率68% (26/38)
>echo "document.write('".$parm."')"; PHPから出力する文字列を、変数と文字列で分けているだけです。 ""で括られる部分はPHPから文字列として出力するのです。 つまり document.write(' $parm ') を結合しているという事です。 ちなみに、ピリオドは変数や文字列などを繋ぐ“結合演算子”で、JavaScriptで言えば“+”に匹敵します。
お礼
ありがとうございました。 おかげさまで良く理解できました。
echo "document.write('<?php echo $parm; ?>')"; ↓ echo "document.write('$parm')"; ではどうだろう。
お礼
ありがとうございました。
補足
アドバイスありがとうございます。 おかげさまで無事に表示することができました。 ただ、document.writeの中に、phpの変数$parmを直接記述することの 意味がよくわかりません。 私のNGの例の、<?php echo $parm; ?>ではうまくいかない理由について ご説明いただければ幸いです。 (phpの中でphpを呼んでるのがまずいのでしょうか。。)
お礼
ありがとうございました。
補足
アドバイスありがとうございます。 おかげさまで無事に表示することができました。 ただ、document.writeの中に記述された変数$parmの左右にピリオドが 付いており、それをダブルクォーテーションでくくっていることの 解釈がよくわからないでいます。 この点について解説いただければ幸いです。 よろしくお願いいたします。