我需要将数组从php传递给javascript函数。我读到我必须使用方法json_encode
,但可能有问题,因为它不起作用......
PHP文件
<?php
echo "<img id=", $i, " src=", path($i), " onclick=\"view(", $i, ", ", json_encode($arrayIm), ", ", json_encode($arrayNa), ")\"'/>";
?>
Javascript文件
function view(i, arrayIm, arrayNa) {
//code..
}
答案 0 :(得分:0)
两件事:
您的图片代码末尾有一个悬空撇号。
您没有进行任何HTML编码以及 JSON编码。
以下是使用printf()
将HTML与变量分开的示例:
printf('<img id="%s" src="%s" onclick="view(%s, %s, %s)" />',
htmlspecialchars($i, ENT_QUOTES, 'UTF-8'),
htmlspecialchars($i, ENT_QUOTES, 'UTF-8'),
htmlspecialchars(json_encode($i), ENT_QUOTES, 'UTF-8'),
htmlspecialchars(json_encode($arrayIm), ENT_QUOTES, 'UTF-8'),
htmlspecialchars(json_encode($arrayNa), ENT_QUOTES, 'UTF-8')
);
需要额外的htmlspecialchars()
,因为您在属性值中使用了JavaScript代码,并且该值必须按此编码(即"
=&gt; "
等。 )
答案 1 :(得分:0)
谢谢大家,但我仍然没有解决问题,尽管已经采用了最终的引号。但是通常在javascript中使用这些数组还是应该应用某些函数? 为什么当我在javascript中使用这些数组时,我注意到,尽管已经要求打印数组元素(例如arrayIm [0]),我打印整个表单数组 [“A B C D”] .. 我为我糟糕的英语道歉。
答案 2 :(得分:-1)
请注意 json_encode 会生成引号,这会引起你的onclick =&#34;&#34;引号。您可以使用类似的东西来解决问题:
echo "<img id=", $i, " src=", path($i), " onclick=\"view(", $i, ", ", str_replace('"', '\\"', json_encode($arrayIm)), ", ", str_replace('"', '\\"', json_encode($arrayNa)), ")\"'/>";
我知道这很快又脏,但应该有效。它取决于你&#34;美化&#34;它:)
答案 3 :(得分:-1)
echo "<img id=".$i." src=".path($i)." onclick=\"view(".$i.", ".json_encode($arrayIm).", ".json_encode($arrayNa).");\"/>";