2014-01-09 68 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'); 

显然,不是将它们放入变量中,而是直接在需要的地方直接使用它们。