将变量从服务器后端传递给javascript的正确方法?

时间:2009-02-17 23:38:16

标签: javascript standards unobtrusive-javascript

我需要将一个php知道的变量传递给我的javascript代码,我想知道正确的方法是做什么的。

我已经知道我可以将它添加到页面生成中:

<script type="text/javascript">
var someJSVariable = <?php echo $somePHPVariable ?>
</script>

但我发现这种方法比我想要的更加突兀。我想知道是否有更好的方法来做到这一点,还是我不得不只是将内联javascript代码注入到视图脚本中?

3 个答案:

答案 0 :(得分:3)

如果它只是1个变量,我认为这是最好的解决方案。如果您不想将JS混合到普通视图中,请创建一个单独的视图,该视图将呈现为.js文件,然后在“真实”视图中包含指向该.js的链接。如果你需要表现,那里需要一些聪明的捕捉。

如果有超过1个变量,例如html文档和服务器之间的数据交换,您可以使用[AJAX](http://en.wikipedia.org/wiki/Ajax_(programming))

答案 1 :(得分:1)

我喜欢json_encode()这种事情。

但是,是的,你对这种内联方法感到“困惑”。老实说,你更喜欢这个吗?

$js = '<script type="text/javascript">';
$js .= "var someJSVariable = " . $somePHPVariable;
$js .= '</script>';

// some time later
echo $js;

不这么认为。内联方法是php的面包和黄油。跟着它。

答案 2 :(得分:0)

您始终可以向单独的URL发出异步请求以获取动态值。但是,当页面加载时,您将在那里受到轻微的性能损失。考虑到这一点,我会推荐你​​概述的在线方法。

你还可以包含另一个“js”文件,它实际上是一个PHP页面,它生成了一堆javascript常量,然后你可以在主页面中访问它们。