php - 将变量从 PHP 传递到 javascript 的最佳方法

标签 php javascript

Possible Duplicate:
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 部分”

<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 对象中的变量以像alert(SistemVars.ParamOne); 一样使用它;

根据您的经验,您认为做到这一点的最佳方法是什么?

最佳答案

第二个选项是更好的方法,因为它使用 foreach 进行保存。环形。另外,json_encode 就是为此目的而设计的,所以为什么不使用它:)仅供引用,<?= ...?> 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>

关于php - 将变量从 PHP 传递到 javascript 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12565595/

相关文章:

php - PHP/MySQL 中的食谱查找器允许按成分过滤

php - 从 AJAX/php 文件返回变量

php - 陷入从变量 CodeIgniter 回显数据的状态

javascript - windows.resize() 不起作用

javascript - 从 div 中获取数据并将其写入文本文件

javascript - jQuery ajax,附有var的数据字段的名称

PHP PayPal Sandbox在交易后无法获得值(value)

javascript - 服务器端表使用 JS、Php 或 Ajax 从表(但不是数据库)中删除行

javascript - 是否可以在父元素中找到文本并将其包装起来?

javascript - 使用不同的对象调用 Jasmine 测试