• ベストアンサー

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; ?>')"; ?> どこか、考え方が根本的に間違っているのかも知れませんが、この問題で ずっと悩んでおり、先に進めない状態です。 上記プログラムのおかしな点、改善点など、アドバイスよろしくお願い いたします。

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

  • ベストアンサー
回答No.2

echo "document.write('".$parm."')";

myart
質問者

お礼

ありがとうございました。

myart
質問者

補足

アドバイスありがとうございます。 おかげさまで無事に表示することができました。 ただ、document.writeの中に記述された変数$parmの左右にピリオドが 付いており、それをダブルクォーテーションでくくっていることの 解釈がよくわからないでいます。 この点について解説いただければ幸いです。 よろしくお願いいたします。

その他の回答 (2)

回答No.3

>echo "document.write('".$parm."')"; PHPから出力する文字列を、変数と文字列で分けているだけです。 ""で括られる部分はPHPから文字列として出力するのです。 つまり document.write(' $parm ') を結合しているという事です。 ちなみに、ピリオドは変数や文字列などを繋ぐ“結合演算子”で、JavaScriptで言えば“+”に匹敵します。

myart
質問者

お礼

ありがとうございました。 おかげさまで良く理解できました。

noname#94983
noname#94983
回答No.1

echo "document.write('<?php echo $parm; ?>')"; ↓ echo "document.write('$parm')"; ではどうだろう。

myart
質問者

お礼

ありがとうございました。

myart
質問者

補足

アドバイスありがとうございます。 おかげさまで無事に表示することができました。 ただ、document.writeの中に、phpの変数$parmを直接記述することの 意味がよくわかりません。 私のNGの例の、<?php echo $parm; ?>ではうまくいかない理由について ご説明いただければ幸いです。 (phpの中でphpを呼んでるのがまずいのでしょうか。。)

関連するQ&A

専門家に質問してみよう