在Javascript中使用Javascript中的PHP变量

时间:2013-08-15 20:24:01

标签: php javascript json

<?php
   $heros=array("Spiderman","Batman","Superman");
?>

<script type="text/javascript">
   var heros = <?php echo $heros;?> // I don't want to do this.
   for(i=0; i<3; i++)
   {  
      if(heros[i]=='Spiderman')
      {
        alert('Hey! I am Spiderman.');
      }
   }
</script>

我想在javascript for循环中使用php数组,但我不想在<script></script>标签内重新打开php标签。我怎样才能在javascript中使用php变量?

3 个答案:

答案 0 :(得分:5)

var heros = <?php echo json_encode($heros);?> // You have to do this.

如果您真的不想在JS中打开php标签,则必须向服务器发出ajax请求并异步获取数据。然后你的代码看起来像这样(使用jQuery作为简洁):

$.getJSON('/url/that/responds/with/json', function(heros) {
   for(i=0; i<3; i++)
   {  
      if(heros[i]=='Spiderman')
      {
        alert('Hey! I am Spiderman.');
      }
   } 
});

答案 1 :(得分:0)

就直接方式而言,bfavaretto是正确的。

如果经常出现这类问题,您可以考虑采用更通用的解决方案;我们的应用程序有一个“context”变量,它包含在PHP中多次操作的字符串索引值。然后,作为我们的标头代码的一部分,其内容被初始化为Javascript变量。显然,我们只将它用于我们打算向客户端公开的内容。像这样:

<?php
include('header1.php');
$context['heroes'] = array('Spiderman', 'Batman');

...do some extra processing with this context variable...
include('header2.php');
?>

<script>
  var heroes = myApp.context.heroes;
</script>

答案 2 :(得分:-1)

错误的解决方案:

你可以回复php中的所有javascript代码,然后使用json编码,这是你不需要在javascript标签中重新打开php标签的唯一方法。

<强>解决方案:

只需使用已经给出的答案:

var heros = <?php echo json_encode($heros);?> // You have to do this.