【问题标题】:Passing PHP array into external Javascript function as array将 PHP 数组作为数组传递给外部 Javascript 函数
【发布时间】:2012-10-29 06:02:41
【问题描述】:

我正在做一些事情,我需要将一个数组从我的 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 中的数组获取。正如你所看到的,我打算将它作为错误处理的弹出消息,这就是为什么我需要它是动态的。

【问题讨论】:

    标签: php javascript


    【解决方案1】:

    使用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 而不是字符串。

    【讨论】:

    • 哦,我明白了,我的警报中有一个返回值说 function Array() { [native code] }。使用您的第一次编辑: onclick="show_error_message()" 但在我再次使用 json_encode 部分后,警告框将不会出现使用尚未编辑的 javascript 中的函数。这正常吗?
    • @KaHeL 我不明白为什么它不起作用,您是否在控制台中遇到任何错误?您使用的是 php 5.2 或更高版本吗?
    • 哦,是的,它有一个错误。 SyntaxError: "syntax error show_error_message([" 至于 PHP,我使用的是 5.3 64bit wampserver,而且我使用的是 codeigniter 作为框架。这可能是问题的原因吗?
    • @KaHeL 我刚刚意识到字符串将使用" 编码,这将提前终止您的onclick 属性onclick="show_error_message(["1","2","3"])"。您可以在属性中使用单引号或在 php echo 中转义双引号。
    • 终于!这行得通!它显示 1,2,3 我认为下一步是让我将传递的值包含到一个变量数组中,以便我完全控制它,对吗?此外,谢谢你!我真的很感谢你的帮助。 :)
    【解决方案2】:

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

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

    【讨论】:

    • 我明白了,我试图将我的 onclick 更改为 onclick="show_error_message()" 和 javascript 函数,但是在我点击我的文本框后不会出现警报。
    • 试试这样的:onclick="show_error_message()"
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2018-07-15
      • 2013-01-13
      • 2015-03-11
      • 2017-11-07
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      相关资源
      最近更新 更多