Ros*_*mar 3 javascript php wordpress jquery
我被困在奇怪的情况我试图通过 WordPress wp_localize_script 在 JS 中传递 PHP 变量并尝试在 console.log 中显示它,但它输出空值。这是我在functions.php中的代码
$conv = 1.36;
echo $conv;
add_action('wp_enqueue_scripts','cassets');
function cassets(){
wp_enqueue_script("all-script",get_template_directory_uri().'/all-script.js',array('jquery'),'',true);
$rate= array(
'conv' => $conv,
);
wp_localize_script( 'all-script', 'rate', $rate);
}
Run Code Online (Sandbox Code Playgroud)
并在 all-script.js 中
var conv = rate.conv;
console.log(conv);
Run Code Online (Sandbox Code Playgroud)
在控制台窗口中它显示为 null 但 php echo 值显示正确。
提前致谢。
您正在使用$conv超出范围的变量。查看PHP 的变量范围文档。您$conv在全局范围内定义,但$conv在您的cassets()函数中引用本地范围。
您需要使用函数 scoped $conv,可以通过在内部定义它,或者将其作为全局变量传递给函数或将其作为Reference传递。
下面是几个例子:
add_action('wp_enqueue_scripts','cassets');
function cassets(){
$conv = 1.36;
wp_enqueue_script( 'all-script', get_template_directory_uri().'/all-script.js', array('jquery'), '', true );
$rate = array(
'conv' => $conv,
);
wp_localize_script( 'all-script', 'rate', $rate );
}
Run Code Online (Sandbox Code Playgroud)
$conv = 1.36;
add_action('wp_enqueue_scripts', 'cassets' );
function cassets(){
global $conv;
wp_enqueue_script( 'all-script', get_template_directory_uri().'/all-script.js', array('jquery'), '', true );
$rate = array(
'conv' => $conv,
);
wp_localize_script( 'all-script', 'rate', $rate );
}
Run Code Online (Sandbox Code Playgroud)
$conv = 1.36;
add_action('wp_enqueue_scripts', function() use($conv){
wp_enqueue_script( 'all-script', get_template_directory_uri().'/all-script.js', array('jquery'), '', true );
$rate = array(
'conv' => $conv,
);
wp_localize_script( 'all-script', 'rate', $rate );
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
312 次 |
| 最近记录: |