2011-07-22 172 views
1

我有一個簡單的PHP變量,我需要將它帶到JavaScript部分。將數據從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]; 

?> 

,我會建議只使用一些變量,如:

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

,然後降低,當您包括您的外部JS文件(它們應該在結束標記之前),可以在文件中檢查是否設置了變量data。然後根據這些數據採取行動。

+0

像魅力一樣工作,謝謝! – rackemup420

8

它是相同的任何其他文本塊。

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

由於值是一組已知值;這些都是數中的一個,它不需要逸出或引用。

+1

+1。只是寫...在變量後面添加一個分號。 :) – Shef

+0

當然,如果你在一個單獨的文件中有你的JS,這是行不通的。但是,爲了這個問題的目的,完美的答案。 –

+0

以及我發佈的文件駐留在同一個文件中,但基礎js文件被調用到該頁面中。 – rackemup420

-1

與嘗試:

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

只會回顯$ yourVar的(字符串)值,您需要添加類似「var yourVar =」 –

0

儘管上述解決方案將幫助,它需要你有嵌入的JavaScript的HTML/PHP文件(其中,授予你必須)。

如果你有一個單獨的js文件,那麼你將需要採取不同的方法。

儲存於一個隱藏的HTML變量:

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

然後在你的js

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

總的來說,我覺得這是最好的辦法無論如何,它促進了分離,意味着你不有一個可更改和動態的可執行代碼模塊。這意味着你可以有效地隔離它進行單元測試。

+0

這沒有奏效。沒有得到任何錯誤或任何事情。 – 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>