2011-07-22 17 views
1

私はJavaScriptの部分に持ち越す必要がある単純なPHP変数を持っています。PHPからJavaScriptへデータを渡す

コード:

<?php 
if ($p == 'home') { $selected == '0'; } 
if ($p == 'music') { $selected == '1'; } 
if ($p == 'videos') { $selected == '2'; } 
if ($p == 'search') { $selected == '3'; } 
if ($p == 'about') { $selected == '4'; } 
if ($p == 'contact') { $selected == '5'; } 
?> 
<script type="text/javascript"> 
//SYNTAX: tabdropdown.init("menu_id", [integer OR "auto"]) 
tabdropdown.init("colortab", $selected) <-- $selected is the variable I want to carry over 
</script> 

答えて

4

すべて

<?php 

$map = array(
    'home' => 0, 
    'music' => 1, 
    'videos' => 2, 
    'search' => 3, 
    'about' => 4, 
    'contact' => 5 
); 

$selected = $map[$p]; 

?> 

の最初と私は同じように、単にいくつかの変数を使用することをお勧めします終了タグの直前)であれば、変数dataが設定されているかどうかをファイル内でチェックすることができます。そして、そのデータに基づいて行動します。

+0

チャームのように働いて、ありがとう! – rackemup420

8

これは、テキストの他の部分と同じです。

tabdropdown.init("colortab", <?php echo $selected; ?>) 

値はすべて数値である既知の値のセットの1つなので、エスケープやクォートは必要ありません。

+1

+1。ただ書くだけだった...変数の後にセミコロンを追加する。 :) – Shef

+0

もちろん、別のファイルにあなたのJSがある場合、これは動作しません。しかし、質問の目的のために、完璧な答え。 –

+0

よく投稿されたものは同じファイルに存在しますが、ベースのjsファイルがそのページに呼び出されます。 – rackemup420

-1

で試してみてください:上記のソリューションは役立つものの

<?php $yourVar = "hello"; ?> 
<script> 
var yourVar = "<?php echo $yourVar ?>" 
</script> 
+0

これはちょうど$ yourVarの(文字列)値をエコーするので、 "var yourVar =" –

0

、それは(あなたが持っているおり、許可された)あなたのHTML/PHPファイルを埋め込まれたJavaScriptを持つあなたを必要としていました。

別のjsファイルがある場合は、別の方法をとる必要があります。隠されたHTML変数で

ストアそれ:

<input type="hidden" id="ColorTabSelected" value="<?php echo($selected);?>"> 

は、その後、あなたのjs一般に

var selected = document.getEelementById("ColorTabSelected").value; 
tabdropdown.init("colortab", selected); 

で、私はとにかくこのアプローチは望ましい見つけ、それが分離を促進し、そうでないことを意味し変更可能で動的なコードの実行可能モジュールがあります。つまり、ユニットテストのために効果的に分離することができます。その後、

?> 
<script type="text/javascript"> 
var data = { /*something that you want to pass to the script */ }; 
</script> 
<?php 

そして、あなたは(あなたの外部JSファイルが含まれている場合、下、彼らがすべき

+0

のようなものを追加する必要があります。何かエラーや何かを得るdidnt。 – rackemup420

0
<?php 
$p = 'home'; 
$map = array(
    'home' => '0', 
    'music' => '1', 
    'videos' => '2', 
    'search' => '3', 
    'about' => '4', 
    'contact' => '5' 
); 
$selected = isset($map[$p]) ? $map[$p] : $map['home']; 
?> 
<script type="text/javascript"> 
tabdropdown.init("colortab", <?=$selected?>) 
</script> 
関連する問題