douxi4114 2016-06-20 08:31 采纳率: 100%
浏览 239

使用wp_localize_script无法正确传递数据

I'm trying to pass PHP data to a JS script. I'm using the wp_localize_script function.

wp_register_script('googlechart', 'https://www.gstatic.com/charts/loader.js');
wp_register_script('mygaloochart_script', plugins_url('chart.js', __FILE__), array('googlechart'));

//I'm not using $atts directly for reasons
$dataToBePassed = array (
        'chart' => $atts['chart'],
        'element' => $atts['element'],
        'elementtype' => $atts['elementtype'],
        'title' => $atts['title']
);

wp_localize_script('mygaloochart_script', 'php_vars', $datatoBePassed);

wp_enqueue_script('googlechart');
wp_enqueue_script('mygaloochart_script');

This is the first line of the JS script mygaloochart_script:

console.log(php_vars.chart);

However, I get the following error in the console:

TypeError: php_vars is null

What am I doing wrong?

  • 写回答

2条回答 默认 最新

  • drjltlm156790 2016-06-20 08:38
    关注

    I am unable to comment due to my reputation. Just curious to ask, did you hook the function something like the below?

    Update

    function add_vars_to_js(){
    
    wp_register_script('googlechart', 'https://www.gstatic.com/charts/loader.js');
    wp_register_script('mygaloochart_script', plugins_url('chart.js', __FILE__), array('googlechart'));
    
    //I'm not using $atts directly for reasons
    $dataToBePassed = array (
            'chart' => $atts['chart'],
            'element' => $atts['element'],
            'elementtype' => $atts['elementtype'],
            'title' => $atts['title']
    );
    
    wp_localize_script('mygaloochart_script', 'php_vars', $datatoBePassed);
    
    wp_enqueue_script('googlechart');
    wp_enqueue_script('mygaloochart_script');
    }
    
    add_action('wp_enqueue_scripts', 'add_vars_to_js');
    
    评论

报告相同问题?