繁体   English   中英

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

[英]Passing PHP array to Javascript array using implode(), join() or json_encode()

我正在开发一个 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>

如果在本地主机(没有 wordpress)上使用,上面的代码提供了一个有效的 output。但是,不知何故,它在 Wordpress 上不起作用。“apache 错误日志”显示此消息:

PHP 警告:join() [function.join]:无效的 arguments 在第 129 行的 \wp-content\plugins\Animation\animation.php 中传递,referer: http://localhost/Website/wp-admin/options-general。 php?页面=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 数组,那就太好了。

改变:

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

到:

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

$arr变量在scope之外,如果要使用全局$arr变量,需要修改你的jav_handler() function,将变量带入本地scope:

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

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

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

jav_handler($arr);

代替:

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

我会尝试:

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

此外,您可能希望使用提供适当 JS 调试的浏览器。 在 chrome 中,你可以使用console.log(lat); 看看 lat 到底有什么

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM