[英]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.