在JavaScript中使用一个PHP定义的变量是否可行?
在PHP中使用定义的变量在JavaScript中是可能的。你可以使用PHP的json_encode函数将变量以JS的形式打印出来。例如,如果你在PHP中有一个数组:
$cow=array('bat'=>false,'fob'=>'widget');
你想要在JS中使用这个数组,你可以这样做:
var cow=; // 打印出 {"bat":false,"fob":"widget"} console.log(cow.fob);// 显示 'widget'
json_encode函数还会自动为字符串加上引号。当然,并不是所有的PHP值都可以被json_encode的,对象中包含方法的无法被表达为javascript的值,但是根据你的描述,好像你并不关心这个问题。
使用wp_localize_script()函数将PHP定义的变量传递给javascript是更好的方式:
wp_enqueue_script( 'my-script', '/path/to/my-script.js' ); $loc_variables = array( 'lat' => $latitude, 'lon' => $longitude ); wp_localize_script( 'my-script', 'location', $loc_variables );
然后在my-script.js中,可以通过location.lat
和location.lon
访问这些变量。
很好,我之前不知道这个方法。
,谢谢。你能说说为什么这种方法更好吗?
- 这种方法本质上与其他答案建议的方法相同,即在页面头部打印内联脚本来定义变量,但它还会通过WordPress的esc_js()函数来运行变量,以确保输出在XSS方面是安全的。此外,由于将变量与在WordPress中注册的脚本绑定,可以轻松将脚本移动到页脚或其他页面,而本地化脚本将随之移动。只是更好的做法而已。