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

将PHP数组作为数组传递到外部Javascript函数,php,javascript,Php,Javascript,我正在做一些事情,需要将数组从php传递到外部javascript上的函数。我现在正在做一些测试,看起来像这样: <input type="text" onclick="show_error_message('<?php echo $array_sample ?>')" readonly="readonly"> 我的$array_示例包含数组(“1”、“2”、“3”)中的数据但返回警报将是数组,每当我在传递参数时将$Array\u sample更改为$Array\u s

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

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

我的$array_示例包含
数组(“1”、“2”、“3”)中的数据
但返回警报将是数组,每当我在传递参数时将
$Array\u sample
更改为
$Array\u sample[0]
时,我得到的数据为1作为警报。我想知道如何将整个数组传递给javascript中的数组来获取。正如您所看到的,我希望它是一个用于错误处理的弹出消息,这就是为什么我需要它是动态的。

使用
json\u Encode()
函数将PHP数组编码为json数据

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

使用

onclick='show\u error\u message()'

onclick=“显示错误消息()

请注意php代码周围缺少引号(
),通过这种方式,数组文本被传递到
show\u error\u message
,而不是字符串。

下面的代码显示了如何将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>

函数mufunc(a)
{
var temp=新数组();
temp=a.split(“~”);

对于(i=0;iI-see),我尝试将我的onclick更改为onclick=“show_error_message()”和javascript函数,但在我单击文本框后,警报将不会出现在我的警报中。使用第一次编辑此消息:onclick=“show\u error\u message()“但是,在我再次使用json_编码部分后,警报框将不会使用javascript中尚未编辑的函数显示。这正常吗?@KaHeL我不明白为什么它不工作,您在控制台中是否收到任何错误?您是否使用php 5.2或更高版本?哦,是的,它有一个错误。SyntaxError:“语法错误显示错误消息([”至于PHP,我使用的是5.3 64位wampserver,我也使用codeigniter作为框架。这可能是问题的原因吗?@KaHeL我刚刚意识到字符串将使用
进行编码,这将提前终止
onclick
属性,
onclick=“show_error\u message([“1”、“2”、“3”))“
。您可以对属性使用单引号,也可以在php echo中转义双引号。最后!这很有效!它显示1,2,3。我想下一步是将传递的值包含到变量数组中,以便我完全控制它。我是对的吗?此外,感谢您的帮助!我非常感谢您的帮助。:)
onclick='show_error_message(<?php echo  json_encode($array_sample) ?>)'
onclick="show_error_message(<?php echo htmlspecialchars(json_encode($array_sample)) ?>)"
<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>