将服务器端变量传递给PHP中的Javascript

时间:2014-02-21 09:58:24

标签: javascript php server-side

将服务器端PHP变量传递给Javascript的最佳方法是什么?

为简化问题,假设我们在PHP中有一个变量($phpVar),我们想将其值赋给Javascript变量(jsVar

Javascript文件以html格式加载 - 它们不是动态创建的!

有些值得深思的话:

1。在加载Javascript文件之前使用PHP打印:

    <script language="javascript" type="text/javascript">
       var jsVar= <?php echo $phpVar?>;
    </script>

2。存储在DOM中(隐藏元素中)

一个。用PHP:

    <span data-name="phpVar" data-value="<?php echo $phpVar?>"></span>

湾读入Javascript文件(假设jQuery可用):

    var jsVar= $('span[data-name="phpVar"]').attr('data-value');

第3。在页面加载后用AJAX询问

显然不是最好的解决方案。不适合所有情况,需要额外的请求......

总结:

  • 他们对我来说都很难看......有更好的方法吗?
  • 是否有任何框架可以处理这种依赖?请尽量减少服务器重新配置。

2 个答案:

答案 0 :(得分:2)

最好的方法是提供从客户端通过AJAX请求的“内部API”。 这样做可以保持双方分开。

在此之后,最快的方法是在共享文件中打印您要共享的值(正如您在问题中所写的那样)。

作为最后一点:如果你继续第二种方式,我会建议你

json_encode()

是一个非常有用的方法,可以将数组和对象从php传递到javascript。

所以如果你有你的php数组:

$array = array( "a" => 1, "b" => 2 );

<script language="javascript" type="text/javascript">
    var js_array= <?php echo json_encode( $array ) ; ?>;
</script>

答案 1 :(得分:1)

这取决于具体情况,但一般来说,主要是使用第一种情况。但是如果传递一个字符串,请不要忘记引号:

<script language="javascript" type="text/javascript">
    var jsVar = '<?php echo $phpVar?>';
</script>