我已经搜索过了,我也从以下网站获得了一些想法。 Passing PHP array into external Javascript function as array 我的示例代码如下:
<?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
。
任何帮助将不胜感激。
答案 0 :(得分:1)
使用json_encode()
时,结果中会保留双引号。所以,json_encode($array_sample)
产生:
["c1","c2"]
将此内容放入HTML后,您有:
<INPUT type="button" value="Php Array" onclick="Test(["c1","c2"])" />
如果可以看出,json-output中的双引号会破坏HTML,这会破坏传递给Test()
方法的内容。
要解决此问题,您可以使用htmlentities()
将双引号转换为HTML值"
:
<INPUT type="button" value="Php Array" onclick="Test(<?php echo htmlentities($newArray) ?>)" />
编辑(htmlentities()
与addslashes()
)
似乎使用addslashes()
实际上无法正常工作,因为属性中的转义双引号(例如onclick="Test(\"value\")"
)无效。但是,onclick="Test("value")"
等html实体版本可以正常工作。
因此,我改变了原来的回答来自&#34;使用addslashes()
&#34;到&#34;使用htmlentities()
&#34;)。