1

我已经搜索过了,我也从以下网站得到了一些想法。 将 PHP 数组作为数组传递给外部 Javascript 函数 我的示例代码如下:

 <?php $array_sample = array("c1","c2"); $newArray = json_encode($array_sample); ?>
 <INPUT type="button" value="Php Array" onclick="Test(<?php echo $newArray ?>)" />
 <script language="javascript"> function Test(test_arr){    alert(test_arr); }</script>

对于上面的代码,我得到undefined的是alert message. 任何帮助,将不胜感激。

4

1 回答 1

1

使用 时json_encode(),结果中会保留双引号。所以,json_encode($array_sample)产生:

["c1","c2"]

将其放入您的 HTML 中时,您将拥有:

<INPUT type="button" value="Php Array" onclick="Test(["c1","c2"])" />

如果您知道的话,您的 json 输出中的双引号会破坏 HTML,从而破坏传递给该Test()方法的内容。

要解决此问题,您可以使用htmlentities()将双引号转换为 HTML-values &quot;

<INPUT type="button" value="Php Array" onclick="Test(<?php echo htmlentities($newArray) ?>)" />

编辑htmlentities()vs. addslashes()
似乎 usingaddslashes()实际上不起作用,因为属性中的转义双引号,例如onclick="Test(\"value\")"无效。但是,诸如onclick="Test(&quot;value&quot;)"作品之类的 html 实体版本。

因此,我将原来的答案从“使用addslashes()”更改为“使用htmlentities()”)。

于 2012-11-08T06:15:09.663 回答