2012-01-06 15 views
5

これまでのところ、JavaScript変数にPHP変数を渡す方法は2つあります。 一つはPHP変数をJavascript/jqueryに渡す

<script> 
     $(document).ready(function() 
      phpvalue=$("#hiddeninput").val() 

     }) 
    </script> 

<input type="hidden" id="hiddeninput" value="phpvalue"> 

を使用している、もう一つは、それらのすべてが素晴らしい仕事、たとえばボタンを有し、onclickの

<script> 
     function clickf(phpvalue) { 

     } 
    </script> 

<input type="submit" onclick="clickf(<?php echo phpvalue ?>)"> 

を使用することですが、:

  1. がいずれかがあります私が行方不明の他の方法?

  2. どちらが「ベスト」ですか?

  3. 私はスクリプトまたは外部のjsの中で使用することができますか?代わりに隠された入力に値を割り当てるの

答えて

14
<script> 
    $(document).ready(function() 
     var phpvalue = <?php echo $var; ?> 
    }); 
</script> 
+0

だから、私の3番目の質問に答えます。しかし、私はこれを外部のjsで使用できますか?ありがとうございます。 – viper

+1

は.jsファイルでは機能しませんが、PHPファイルにすべてのjavascriptを入れ、javascript変数にPHP値を渡して、通常はjsファイルのようにphpファイルをインポートすることができます。 Joeri

+0

これも考えましたが、これにはこのようなヘッダが必要でしょうか? – viper

2
<script> 

var javascript_variable = <?php echo $php_variable; ?>; 

</script> 
1

、あなただけの直接JavaScriptを生成することができます:

$script = <<<EOT 
<script> 
var phpvalue = $phpvalue; 
</script> 
EOT; 
echo $script; 
0

をトップ例えば、あなたがいずれかを使用することができヴァルを使用する必要はありませんあなたは好きです。その後、jqueryの、すでに答えの他のような

$("#hiddeninput").attr("phpvalue"); 
4

内の例

phpvalue="myvalue" 

については は、ちょうどあなたがvar foo = <?= $php_value ?>;var foo = <?php echo $php_value ?>;のように、JSの値を置きますwhereever PHPタグを置きます。

これを外部のJavaScriptファイルで使用する場合は、.jsファイルがPHPによって解析されるようにする必要があります。これがオプションではない場合(ホストが許可しないなど)、<head>内の<script>タグに値を設定し、外部のJavaScriptから変数を参照することをお勧めします。その場合、グローバルオブジェクトを乱雑にしないために、var app_vars = { foo: <?= $bar ?> }のようなネームスペースを使用することを強くお勧めします。

もう1つの方法は、値をAjax経由で取得することです。しかし、このアプローチの実行可能性は、ユースケースによって異なります。

、別のヒント:あなたは複数の変数や配列を渡したい場合は、バージョン5.2以降PHPに焼きJSONがあります:

<?php 
    $my_complex_var = array(
     'array' => array('foo', 'bar'), 
     'val2' => 'hello world' 
    ); 
?> 
<script> 
    var my_complex_js_var = <?= json_encode($my_complex_var) ?> 
</script> 
+0

それは非常にいいです、ありがとうございます。なぜ私はvarの名前空間を必要とするのでしょうか?私はそれを得ていない! – viper

+0

@garveyも先ほど触れたように.jsの代わりに.phpを使用できますか? – viper

+0

名前空間は、グローバルオブジェクトをきれいに保つのに役立ちます。そしてGOをきれいに保つことは、1000の理由からベストプラクティスです。これがあなたにあまり意味をなさないのであれば、私はDouglas Crockfordの講演のいくつかを見てみることをお勧めします。彼の名前をGoogle Videoで検索してください。 そして、実際にはファイル拡張子として '.php'を使うだけで、そこにJSとPHPを混在させることができます。あるいは、もっと良いのは '.js.php 'です。この方法では、これらのファイルで何が起こっているのかはまだ分かります。 –

関連する問題