2014-02-21 55 views
2

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

为了简化问题,假设我们在PHP($phpVar)一个变量,我们希望它的值赋给

JavaScript文件的HTML被加载JavaScript变量(jsVar) - 它们不是建立动态!

有些耐人寻味:

1.打印与PHP加载JavaScript文件之前:

<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> 

b。阅读Javascript文件(假设jQuery的可用):

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

3.询问其与AJAX页面加载

Obviosly不是最好的解决方案了。不适合于所有情况,而且需要额外的请求......

结论:

  • 他们都显得难看,我...有没有更好的方法吗?
  • 有没有任何框架可以处理这种依赖性?请尽量减少服务器重新配置。
+0

我使用选项1 –

+0

解决方法1,如果该值不从用户交互,解决方案3否则dinamically依赖。你为什么不喜欢他们? – dirluca

+0

AJAX是最好的方法,你认为在哪种情况下,Ajax不好? –

回答

1

这取决于情况,但通常情况下,主要是使用第一种情况。

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

的最好的办法是提供“内部API”通过AJAX从客户端请求:但是,如果你传递一个字符串不要忘了引号。这样做你可以保持你的双方分开。

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

作为最后要注意:如果你继续用第二种方式,我建议你

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> 
+0

这就是@DanFromGermany所提供的 –

+0

@Victor谁?我只写了我所知道的最好的。我不知道其他人是否已经提供了它。你能向我们提供他的答案吗?谢谢。 –

+0

你可以阅读[评论](http://stackoverflow.com/questions/21930987/pass-server-side-variables-to-javascript-in-php#comment33219972_21930987):) –