将PHP数组作为数组传递给外部Javascript函数

时间:2012-10-29 06:02:42

标签: php javascript

我正在做一些我需要将数组从我的php传递到外部javascript上的函数的东西。我现在正在做一些测试,看起来像这样:

<input type="text" onclick="show_error_message('<?php echo $array_sample ?>')" readonly="readonly">

和javascript函数就是这个:

function show_error_message(test) {
alert(test)
}

我的$ array_sample包含array("1","2","3");的数据,但返回警报是Array,每当我在传递参数时将$array_sample更改为$array_sample[0]时,我得到的数据为1警报。我想知道如何通过javascript中的数组传递整个数组。正如您所看到的,我打算将它作为错误处理的弹出消息,这就是为什么我需要它是动态的。

3 个答案:

答案 0 :(得分:10)

使用json_encode

onclick='show_error_message(<?php echo  json_encode($array_sample) ?>)'

onclick="show_error_message(<?php echo htmlspecialchars(json_encode($array_sample)) ?>)"

注意PHP代码周围缺少引号('),这样一个数组文字传递给show_error_message而不是字符串。

答案 1 :(得分:5)

使用json_encode()函数将PHP数组编码为json数据。

在Javascript中使用JSON.parse()来解析Json字符串。

答案 2 :(得分:4)

下面的代码显示了如何将php数组传递给javascript:

<script type="text/javascript">
    function mufunc(a)
    {
        var temp = new Array();
        temp = a.split('~');
        for(i=0;i<temp.length;i++)
        {
            alert(temp[i]); 
        }
    }
</script>

<?php
    $a = array('a','b','c');
    $b = implode("~",$a);
?>
<a href="javascript:void(0)" onClick="mufunc('<?php echo $b; ?>')">Click Here</a>