【问题标题】:Is using a PHP defined variable in javascript possible? [duplicate]是否可以在 javascript 中使用 PHP 定义的变量? [复制]
【发布时间】:2011-08-18 20:16:44
【问题描述】:

是否可以在 javascript 中使用早期 PHP 代码中定义的变量?

例如(在页面模板 PHP 文件中):

<?php
$arr = array(-34, 150);
?>
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=false">
</script>
<script type="text/javascript">
...
var latlng = new google.maps.LatLng($arr);
...
}
</script>

【问题讨论】:

标签: php javascript


【解决方案1】:

更好的是,使用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.latlocation.lon 访问这些变量。

【讨论】:

  • 不错,不知道那个。
  • @goldenapples,谢谢。你能说为什么这种方式更好吗?
  • @Ash - 此方法的作用与其他答案所暗示的基本相同;在定义变量的页面头部打印一个内联脚本,但它也通过 WordPress 的 esc_js() 函数运行变量,以确保您的输出在 XSS 方面是安全的。此外,由于您将变量绑定到您在 WordPress 中注册的脚本,您可以轻松地将脚本移动到页脚或其他页面,并且本地化脚本将跟随它。只是更好地练习恕我直言。
  • 这真是一个很棒的解决方案,谢谢
【解决方案2】:

不,但是你可以把它变成一个 js var...

<script type="text/javascript">
var myArray = new Array(<?php echo $myArrayVals; ?>);
</script>

【讨论】:

    【解决方案3】:

    要扩展 Milo 的答案,您可以使用 PHP 的 json_encode 函数以 JS 形式打印出变量。

    例如,如果你在 PHP 中有一个数组

    <?php
     $cow=array('bat'=>false,'fob'=>'widget');
    

    你想要的JS,那么你可以

    <script>
      var cow=<?php echo json_encode($cow);?>; 
      // prints {"bat":false,"fob":"widget"}
      console.log(cow.fob);//'widget' of course
    

    json_encode 还负责引用字符串。当然,并非所有 PHP 值都是 json_encodable - 具有方法的对象不能表示为 javascript 值,但听起来您并不关心这一点。

    【讨论】:

      猜你喜欢
      • 2011-11-23
      • 1970-01-01
      • 2011-11-26
      • 1970-01-01
      • 2014-01-22
      • 2015-06-15
      • 1970-01-01
      • 2012-12-20
      • 2023-01-13
      相关资源
      最近更新 更多