在javascript函数中填充PHP数组

时间:2014-01-27 12:17:57

标签: javascript php arrays cakephp-1.3

我有一个php数组如下: $city_more = $form->select("GalStore.gal_location_id", $gal_locations,null,$city_attributes);

产生var_dump($city_more)

string '<select name="data[GalStore][gal_location_id]" id="locations_list">
<option value="">--- Select City ---</option>
<option value="11">Ahmedabad</option>
<option value="31">Aijwal</option>
<option value="3">Bangalore</option>
<option value="26">Bhopal</option>
<option value="9">Bhubaneswar</option>
<option value="30">Bidar</option>
<option value="10">Chandigarh</option>
<option value="4">Chennai</option>
<option value="1">Delhi - NCR</option>
<option value="34">Dhaka</option>
<option value="21">Dimapur</optio'... (length=1426)

我想在javascript函数中使用这个数组:

$('#add_more_city').click(function(){
   var city = '';
   alert(<?php echo $city_more; ?>);            
});

但它没有提醒任何事情!我的流程是错的吗?

2 个答案:

答案 0 :(得分:3)

您在alert()调用中缺少引号。你这样打电话:

alert(test);

应该是:

alert('test');

替换你的alert()调用
alert('<?= $city_more; ?>');

但是你必须确保这个字符串($ city_more)里面没有更多的单引号('),如果有的话,它们应该被转义。

编辑:

另外,如果你想将更高级的东西(数组,对象等)从PHP传递给Javascript,可以考虑在PHP中使用json_encode()(以及使用addslashes()转义)和Javascript中的$ .parseJSON()(如果你正在使用jQuery)。像这样:

<script>
    var test = $.parseJSON("<?= addslashes(json_encode($array)) ?>");
</script>

答案 1 :(得分:1)

问题

你想要什么?

  • 传递php数组的javascript来做什么?
  • 将php数组传递给 JSON 格式的javascript?

可能的解决方案

<script type="text/javascript">
$(document).ready(function() {
  // alert in JSON format
  alert("<?php echo json_encode($city_more) ?>");
  });  
</script>

<script type="text/javascript">
$(document).ready(function() {
  // alert in "php" format
  alert("<?php echo $city_more ?>");
  });  
</script>
相关问题