簡體   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