1

可能重复:
将 PHP 变量传递给 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部分”

<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) 来保存普通变量和数组,并在 JavaScript 中设置 SistemVars 对象中的 var 以像 alert(SistemVars.ParamOne) 一样使用它;

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

4

2 回答 2

1

第二个选项是更好的方法,因为它使用foreach循环保存。此外,json_encode 是为此目的而制作的,所以为什么不使用它:) 仅供参考,<?= ...?>不再使用 PHP 的短标签 PHP 短标签可以使用吗?

  <script>
  var SistemVars = SistemVars || {};
  SistemVars = <?=json_encode($JSVARS)?> // Object, with plain and array BUT problems with certain characters.
</script>
于 2012-09-24T13:04:36.027 回答
0

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

于 2012-09-24T13:08:15.487 回答