使用implode(),join()或json_encode()将PHP数组传递给Javascript数组

时间:2012-04-08 04:09:00

标签: php javascript arrays wordpress wordpress-plugin

我正在使用Wordpress插件,我需要将PHP数组传递给Javascript数组。我尝试过使用join(),implode()甚至Json_encode。但是,wordpress没有显示任何价值。

使用join()时,我使用了代码:

<?php
$php1 = array(1,2,3);

?>
<script language='Javascript'>
var lat = ["<?php echo join("\", \"", $php1); ?>"];
document.write(lat[1]);
</script>

如果在localhost上使用(没有wordpress),上面的代码提供了有效的输出。但是,不知何故,它不适用于Wordpress。 “apache错误日志”显示以下消息:

PHP警告:join()[function.join]:在第129行的\ wp-content \ plugins \ Animation \ animation.php中传递的参数无效,参考文献:http://localhost/Website/wp-admin/options-general.php?page=js

与implode()的情况相同。服务器错误日志显示与implode()相同的上述警告。

然后我尝试使用以下代码获取json_encode:

var lat = <?php echo json_encode($php1); ?>;

但是没有返回值。

编辑:我用于JSON的代码:

<?php
/*
Plugin Name: PHPToJavascript
*/
$arr = array(1,2,3,4,5,6,7,8,9);            //array to pass

add_action('admin_menu','admin_jav');

function admin_jav(){
add_submenu_page('options-general.php','Javarray','Javarray','manage_options','javarray',jav_handler);
}

function jav_handler(){
echo 'Into handler';

?>
<SCRIPT LANGUAGE = 'Javascript'><!--
var sm=<?php echo json_encode($arr); ?>;      //using Json  

document.write(sm[1]);                       //doesnt display any output!!!

</SCRIPT>
<?php
}
?>

请指导我完成这个。我感谢任何帮助。如果你帮助我将这个PHP数组传递给javascript数组会很棒。

3 个答案:

答案 0 :(得分:0)

更改:

var lat = ["<?php echo join("\", \"", $php1); ?>"];
document.write(lat[1]);

var lat = ["<?php echo join('", "', $php1); ?>"];
document.write(lat[0]);

答案 1 :(得分:0)

$arr变量超出范围。如果要使用全局$arr变量,则需要修改jav_handler()函数以将变量置于本地范围:

function jav_handler(){
    global $arr;
    // ...

但是,最好在可能的情况下始终避免使用全局变量,因此首选的方法是更改​​函数以将数组作为参数并在调用函数时显式传递:

function jav_handler($arr){
    // ...
}

jav_handler($arr);

答案 2 :(得分:0)

而不是:

var lat = ["<?php echo join("\", \"", $php1); ?>"];

我会尝试:

var lat = "<?php echo json_encode($php1); ?>";

此外,您可能希望使用提供正确JS调试的浏览器。在chrome中,您可以使用console.log(lat);来查看lat持有的内容