解決済みの質問
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; ?>')";
?>
どこか、考え方が根本的に間違っているのかも知れませんが、この問題で
ずっと悩んでおり、先に進めない状態です。
上記プログラムのおかしな点、改善点など、アドバイスよろしくお願い
いたします。
投稿日時 - 2009-09-18 13:25:05
echo "document.write('".$parm."')";
投稿日時 - 2009-09-18 14:08:21
補足
アドバイスありがとうございます。
おかげさまで無事に表示することができました。
ただ、document.writeの中に記述された変数$parmの左右にピリオドが
付いており、それをダブルクォーテーションでくくっていることの
解釈がよくわからないでいます。
この点について解説いただければ幸いです。
よろしくお願いいたします。
投稿日時 - 2009-09-18 15:26:15
お礼
ありがとうございました。
投稿日時 - 2009-09-19 12:20:53
1人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(2件中 1~2件目)
>echo "document.write('".$parm."')";
PHPから出力する文字列を、変数と文字列で分けているだけです。
""で括られる部分はPHPから文字列として出力するのです。
つまり
document.write('
$parm
')
を結合しているという事です。
ちなみに、ピリオドは変数や文字列などを繋ぐ“結合演算子”で、JavaScriptで言えば“+”に匹敵します。
投稿日時 - 2009-09-18 23:15:21
お礼
ありがとうございました。
おかげさまで良く理解できました。
投稿日時 - 2009-09-19 12:19:24
echo "document.write('<?php echo $parm; ?>')";
↓
echo "document.write('$parm')";
ではどうだろう。
投稿日時 - 2009-09-18 14:06:45
補足
アドバイスありがとうございます。
おかげさまで無事に表示することができました。
ただ、document.writeの中に、phpの変数$parmを直接記述することの
意味がよくわかりません。
私のNGの例の、<?php echo $parm; ?>ではうまくいかない理由について
ご説明いただければ幸いです。
(phpの中でphpを呼んでるのがまずいのでしょうか。。)
投稿日時 - 2009-09-18 15:24:50
お礼
ありがとうございました。
投稿日時 - 2009-09-19 12:22:03
OKWaveのオススメ
おすすめリンク