【问题标题】:Pass server-side variables to Javascript in PHP [duplicate]在 PHP 中将服务器端变量传递给 Javascript [重复]
【发布时间】:2014-02-21 09:58:23
【问题描述】:

将服务器端 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>

b.读取 Javascript 文件(假设 jQuery 可用):

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

3.页面加载后用 AJAX 询问它

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

结论:

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

【问题讨论】:

  • 如果值不依赖于用户交互,则解决方案 1,否则解决方案 3。你为什么不喜欢他们?
  • AJAX 是最好的方式,你觉得在什么场景下,ajax 不好?
  • @ShaikMahaboobBasha 对于 AJAX,您需要向服务器发送新的子请求,这不是最佳解决方案。最好的解决方案是第一种情况,您不需要使用子请求加载服务器。
  • 选项 1 与 json_encode() ...
  • @DanFromGermany 如果需要传递很多变量最好使用

标签: javascript php server-side


【解决方案1】:

最好的方法是提供客户端通过 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>

【讨论】:

  • @DanFromGermany 提供的内容
  • @Victor 谁?我只写了我认为最好的。不知道有没有人已经提供了。你能给我们提供他的答案吗?谢谢。
  • 你可以阅读comments :)
  • 哦,现在我明白了,但他在我回答几分钟后写了评论。顺便说一句,我真的不介意。最重要的是,我们让@igaster 最清楚地知道什么是最好的。谢谢!
【解决方案2】:

视情况而定,但通常主要使用第一种情况。但是,如果您传递一个字符串,请不要忘记引号:

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

【讨论】:

    猜你喜欢
    • 2014-01-11
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    相关资源
    最近更新 更多