1

私はWordpressプラグインに取り組んでおり、PHP配列をJavascript配列に渡す必要があります。join() 、 implode() 、さらには Json_encode を使用してみました。しかし、ワードプレスは値を表示していません。

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]: 無効な引数が \wp-content\plugins\Animation\animation.php の 129 行目に渡されました。リファラー: http://localhost/Website/wp-admin/options-general. php?page=js

implode() の場合も同様です。サーバー エラー ログには、implode() に関する上記の警告が表示されます。

次に、以下のコードを使用して json_encode を試しました。

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

しかし、no 値が返されます。

編集: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 配列に渡すのを手伝っていただければ幸いです。

4

3 に答える 3

0

それ以外の:

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

私は試してみます:

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

さらに、適切な JS デバッグを提供するブラウザを使用することもできます。console.log(lat);クロムでは、緯度が保持するものを正確に確認するために使用できます

于 2012-04-08T04:58:28.013 に答える
0

変化する:

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

に:

var lat = ["<?php echo join('", "', $php1); ?>"];
document.write(lat[0]);
于 2012-04-08T04:44:12.103 に答える
0

$arr変数はスコープ外です。グローバル$arr変数を使用する場合は、jav_handler()関数を変更して変数をローカル スコープにする必要があります。

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

ただし、可能な場合は常にグローバル変数を避けることをお勧めします。そのため、関数を変更して配列を引数として取り、関数を呼び出すときに明示的に渡すことをお勧めします。

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

jav_handler($arr);
于 2012-04-08T04:51:40.237 に答える