QA@IT

javascriptの値をphpに渡す方法について

33249 PV

下記のソースコードにおいて、javascriptの値をphpに渡そうとしてもうまくいきません。

最も簡単な解決方法について教えて頂けませんでしょうか?

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'>
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">

</head>
<body>

<?php
$a[0] = 100;
$a[1] = 200;
?>

<script>
var j = 2;
var str = new Array;

for(var i=0;i<j;i++){
    str[i] = <?php echo $a[i]; ?>;
    alert(str[i]);
}
</script>

</body>
</html>

回答

PHPタグ内のコードが先に解釈される ため「JavaScriptの値をPHPに渡す」ということはできません。
やりたいことが単純に$aの配列に入った値をアラート表示したいということであれば

var j = 2;
var str = new Array;
for(var i=0;i<j;i++){
    str[i] = <?php echo $a[i]; ?>;
    alert(str[i]);
}

この部分を以下のように変更すればよいのではないでしょうか。

<?php
foreach ($a as $value){
    echo "alert('$value');";
}
?>
編集 履歴 (0)
  • ありがとうございます。

    >PHPタグ内のコードが先に解釈される

    そうなのですね。勉強になりました。
    -

どっちかというと、PHPの値をJavascriptで渡したいんですね。

PHPはブラウザに読み込まれる前にサーバーで処理(解釈)されます。
また、Javascriptはブラウザ上で動作します。
従って、javascriptのfor文の中などにphpを入れてもうまく動きません。
javascriptのfor文が動作する段階では、phpの解釈は既に終わっていますので。

従って、変数の定義の段階で、var str=<?echo $var?>などとして下さい。
また、配列の場合はJSONに変換すると簡単です。
JSONというのはデータ形式の一種です。

<?php
$a[0] = 100;
$a[1] = 200;
// $aをjson形式に変換
$json = json_encode($a);
?>
<script>
var j = 2;
var str = <? echo $json?>;

for(var i=0;i<j;i++){
    alert(str[i]);
}
</script>
</body>
</html>
編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。