将php字符串传递给javascript变量

时间:2017-04-27 作者:user117473

我需要传递一个php字符串,该字符串存储在$attr[\'footer_caption\'] 在一个js文件的短代码函数中,highcharts是在该文件中初始化的。

$fields = array(

        array(
            \'label\' => esc_html( \'Footer label\' ),
            \'description\' => esc_html( \'Choose the footer label\' ),
            \'attr\' => \'footer_caption\',
            \'type\' => \'text\',
        ),


public static function shortcode_ui_chart( $attr, $content, $shortcode_tag ) {

    $attr = shortcode_atts( array(
        \'chart\' => null,
        \'footer_caption\' => null,
    ), $attr, $shortcode_tag );
我一直在读关于本地化脚本的书,但没能让它起作用。有没有一个简单的方法来实现这一点?我希望该变量中的php数组中的字符串:

    Highcharts.setOptions({
  chart: {
          type: \'column\',
          events: {
              load: function () {
                var teste \'WANT TO PASS $attr[\'footer_caption\'] HERE\'
                var label = this.renderer.label(teste)

2 个回复
SO网友:ahendwh2

您可以发布您如何尝试使用localize\\u脚本吗?因为我经常使用该函数将PHP变量传递给JavaScript,而且它总是有效的。

另一种方法是在shortcode_ui_chart 因此,您以后可以在脚本中使用它:

echo \'<script type="text/javascript">var footer_caption = "\' . $attr[\'footer_caption\'] . \'"</script>\';
使用此代码可以使用变量footer_caption 在javascript中。

编辑:有关代码解释,请参见注释

var chart1 = Highcharts.chart({
    chart: {
        events: {
            load: function () {
                var caption \'footer_caption\'
                var label = this.renderer.label(caption)
            }
        }
    }
});

SO网友:Carsten Schmitt

您可以使用wp\\u localize\\u脚本将变量传递给javascript。

以下是一个示例:

wp_register_script(\'your_script_name\', \'path/to/script.js\');
$variables = array (
    \'footer_caption\' => $attr[\'footer_caption\'],
);
wp_localize_script(\'your_script_name\', \'js_object_name\', $variables );
wp_enqueue_script(\'your_script_name\');
然后,您可以通过以下方式访问此变量:

js_object_name.footer_caption

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请