如何使用json_encode()将php关联数组作为参数传递给Javascript函数

时间:2017-07-26 03:46:42

标签: javascript php arrays json

我可以通过以下代码成功地将索引数组传递给javascript函数。例如:

<?php
$arr = array(1, 2, 3);
?>
<button onclick="test(<?=json_encode($arr)?>);">test</button>
<script>
function test(x){
  alert(x[0]);
  alert(x[1]);
  alert(x[2]);
}
</script>

现在我想将数组更改为关联数组。但是,它不再起作用......

我的代码有问题吗?

我该如何解决?非常感谢你!

我的代码如下:

<?php
$arr = [ "A" => 1, "B" => 2, "C" => 3 ];
?>
<button onclick="test(<?=json_encode($arr)?>);">test</button>
<script>
function test(x){
  alert(x["A"]);
  alert(x["B"]);
  alert(x["C"]);
}
</script>

1 个答案:

答案 0 :(得分:3)

生成的JSON中的引号会混淆html解析器。您需要对标记属性的内容进行实体编码。您可以使用htmlspecialchars()htmlentities()

<?php
$arr = [ "A" => 1, "B" => 2, "C" => 3 ];
?>
<button onclick="test(<?=htmlentities(json_encode($arr))?>);">test</button>
<script>
function test(x){
  alert(x["A"]);
  alert(x["B"]);
  alert(x["C"]);
}
</script>