Я делаю то, что мне нужно передать массив из моего php в функцию на внешнем javascript. В настоящее время я делаю несколько тестов, которые выглядят следующим образом:
<input type="text" onclick="show_error_message('<?php echo $array_sample ?>')" readonly="readonly">
и функция javascript такова:
function show_error_message(test) { alert(test) }
my $ array_sample содержит данные, которые представляют собой array("1","2","3");
но возвращаемое предупреждение будет Array и всякий раз, когда я изменяю $array_sample
в $array_sample[0]
при передаче параметров, я получаю данные, которые являются 1 в качестве предупреждения. Интересно, как я могу передать весь массив на это, чтобы получить также массив в javascript. Ну, как вы можете видеть, я решил, что это всплывающее сообщение для обработки ошибок, поэтому мне нужно, чтобы оно было динамическим.
Использовать 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
а не строка.
Кодирование массива PHP на json-данные с помощью функции json_encode()
.
И в Javascript используйте JSON.parse()
для синтаксического анализа строки Json.
В приведенном ниже коде показано, как передать 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>