将(作为参数)php数组传递给javascript函数

时间:2014-01-16 21:35:55

标签: javascript php

我有一个php数组,我想将其作为参数传递给onClick的javascript函数。 但是,该函数位于另一个文件中。我试着解释一下。

文件 map.php

  <head>
     <script type="text/javascript" src="../public/js/map.js"></script>   
     <script type='text/javascript'>
         var js_array = [<?php echo '"'.implode('","', $php_array).'"' ?>];
         //alert(js_array[0]); //this alert works
     </script>     
  </head>
  //code...
  <form method="post" enctype="multipart/form-data" action="">
     <input type="submit" name="submit" value="Post" onClick="createMap(js_array); return false;"/>
  </form>

档案 map.js 。我尝试通过警报打印阵列,但什么也没做:

  for(i=0; i<js_array.length; i++) {
     alert(js_array[i]);
  }

  function createMap(js_array) {
     //code...
  }

怎么了?非常感谢你


修改 感谢您的回复,但仍然无法正常工作。我修改了这样的代码:

文件map.php

  <head>
     <script type='text/javascript'>
         var js_array = JSON.parse(<?php echo "json_encode($addresses)"; ?>);
         //alert(js_array[0]); //this alert works
     </script>     
     <script type="text/javascript" src="../public/js/map.js"></script>
  </head>
  //code...
  <form method="post" enctype="multipart/form-data" action="">
     <input type="submit" name="submit" value="Post" onClick="createMap(js_array); return false;"/>
  </form>

文件map.js

  for(i = 0; i < js_array.length; i++) {
     alert(js_array[i]);
  }

  function createMap(js_array) {
     //...
  }

1 个答案:

答案 0 :(得分:1)

我认为您遇到了问题,因为在初始化map.js的脚本块之前加载并执行了js_array文件。尝试切换脚本块。

绝对在PHP端使用json_encode方法。这就是它的设计目标。

仔细查看代码后,我会看到您所包含的所有"标记,并且认为它最终成为有效的JSON,但您的代码会更容易如果您只使用json_encodeJSON.parse,则维护并让其他人帮助调试。

您的ACTUAL问题只是script阻止的顺序。

我测试了这段代码,它有效。

<head>
  <?php $addresses = array("test","test"); ?>
  <script type='text/javascript'>
    var js_array = <?php echo json_encode($addresses); ?>;
    //alert(js_array[0]); //this alert works
  </script>     
  <script type="text/javascript" src="map.js"></script>
</head>

您还忘记了原始代码中的; ...