将vars从PHP传递到javascript的最佳方式

时间:2012-09-24 13:01:58

标签: php javascript

  

可能重复:
  What's the best way to pass a PHP variable to Javascript?

我必须做一个自动处理从PHP到JavaScript的变量的函数,它简单而安全。 目前存储在具有变量值的类变量数组中,然后想法是在Javascript中提取,但是很多疑问都会让我(技术上)最好的方法来做到这一点。

还有几个问题,尤其是当复杂移动到Javascript数组或带有重音符号,特殊符号或符号作为引号或单引号的字符串时,包括使用带有换行符和回车链的链接时函数json_decode的问题。 (你得到了无效的JSON,我不得不在PHP中做一个清理函数,以避免传递带有这些字符的变量,但有时我需要)

我在网上搜索了很多,而且我找到了很多答案,但没有一个终结说服,更多的是上述问题。

一个例子:

PHP方法(太简单了):

   var JsVars;
   public function saveJsVar($key, $value) {
      $this->JsVars[$key] = $value; //Possible need to clean certain characters like /n /r
   }

“javascript part”

<script>
   var SistemVars = SistemVars || {};
   <?php foreach ($JSVARS as $k => $var) { ?>
   SistemVars.<?=$k?> = '' || '<?php echo $var ?>'; // Dont work with arrays only plain
   <?php } ?>
</script>

另一种选择:

<script>
   var SistemVars = SistemVars || {};
   SistemVars = <?=json_encode($JSVARS)?> // Object, with plain and array BUT problems with certain characters.
</script>

它的想法是使用PHP(saveJsVar)来保存纯变量和数组,并在SistemVars对象中设置vars使用它来像alert(SistemVars.ParamOne);

根据您的经验,您认为最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

第二个选项是更好的方法,因为它使用foreach循环进行保存。此外,json_encode是为此目的而制作的,所以为什么不使用它:)而且仅仅是FYI,不再使用PHP的<?= ...?>短标签Are PHP short tags acceptable to use?

  <script>
  var SistemVars = SistemVars || {};
  SistemVars = <?=json_encode($JSVARS)?> // Object, with plain and array BUT problems with certain characters.
</script>

答案 1 :(得分:0)

我喜欢使用隐藏的输入元素并使用jQuery来使用/访问它们的值。 这样做可以让你保持你的js干净 - 里面没有PHP代码。 如果要将所有JS代码导出到外部文件中 - 这就是方法。