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/