2014-01-09 64 views
0

我有這樣將php變量賦值給javascript變量的最佳實踐是什麼?

var minAmountPay = <?php echo $this->chat['Current']['admin'] >= 1 ? 1 : $this->minAmountPay; ?>; 
    var userId = <?php echo $this->currentUserId?>; 

我使用ZF一些代碼,我有很多的javascript代碼在我的操作文件。我想爲每個動作創建js文件並對這些文件進行縮小處理。但我無法創建js文件,因爲我已將php變量分配給javascript變量。

也許我需要使用一些JavaScript框架用於此目的?

回答

1

JavaScript不能直接與PHP交互。

這是因爲JavaScript是客戶端,PHP是服務器端。

要做到這一點的唯一方法就像你一樣 - 通過在PHP中生成輸出到腳本中。

0

您可以將這些值分配給頁面中的隱藏輸入。

並通過輸入值獲取值。

這些值對用戶來說都是可見的。

3

使用data attributes

例如:

HTML:

<div id="something" data-minamountpay="<?php echo $this->chat['Current']['admin'] >= 1 ? 1 : $this->minAmountPay; ?>"></div> 

JS(使用jQuery):

var minAmountPay = $('#something').data('minamountpay'); 
+0

將PHP值直接輸出到JavaScript變量的工作量較少... – Ryan

+0

但是,您無法緩存JS文件,也不會將交互性與純HTML分開。 –

+0

這是正確的方法。 @Stanyer更不用於清理數據庫輸入。 – AmazingDreams

0

你可以添加JavaScript到HTML文件中使用

<script type="text/javascript"> 
var minAmountPay = <?php echo $this->chat['Current']['admin'] >= 1 ? 1 : $this->minAmountPay; ?>; 
var userId = <?php echo $this->currentUserId?>; 
</script> 
0

你可能想要考慮在哪裏你把這些變量。你可以把它們放在HTML中嗎?當我需要你在做什麼,我用的是HTML 5的數據屬性和分配變量到適當的地方是這樣的:

<div id="my-appropriate-div" 
    data-min-amount-pay="<?php echo $this->chat['Current']['admin'] >= 1 ? 1 : $this->minAmountPay; ?>" 
    data-user-id="<?php echo $this->currentUserId ?>"> 

然後在JavaScript中,你可以正是如此訪問數據:

var minAmountPay = $('#my-appropriate-div').data('min-amount-pay'); 
var userId = $('#my-appropriate-div').data('user-id'); 

顯然,不是將它們放入變量中,而是直接在需要的地方直接使用它們。