通过HTML将复杂变量传递给javascript的正确方法

时间:2011-06-13 19:24:04

标签: php javascript html json

我试图摆脱使用PHP的htmlentities,这就是我停止的地方:

<?php
echo '<img ... onclick="MP.view(\''.$i->name.'\') />';
?>

但后来我想,不是替换和检查特殊字符,我只是JSON整个对象。

<?php
echo '<img ... onclick="MP.view('.json_encode($i).') />';
?>

这提供了一个非常不希望的结果,产生了大量的双引号。 那我该怎么做呢?我应该为每个图像分配一个数字唯一ID并只传递id,然后从JS数组中查找其余的数据吗?

2 个答案:

答案 0 :(得分:6)

在这种情况下,正确的做法是:

 htmlspecialchars(json_encode($var), ENT_QUOTES, "UTF-8")

htmlspecialchars将任何双引号转换为正确的HTML转义,使得结果字符串适合大多数属性。 ENT_QUOTES参数也会处理单引号;但你可能在你的例子中不需要那样。

答案 1 :(得分:0)

传递这样的数据需要花费更多的时间(以及更少的字节):

echo '<script>var myObj = '.json_encode($i).'</script>';

然后,您的代码可能看起来更像这样:

echo '<img ... onclick="MP.view(myObj)" />';