【问题标题】:Populating PHP array in javascript function在 javascript 函数中填充 PHP 数组
【发布时间】:2014-02-18 06:45:06
【问题描述】:

我有一个 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; ?>);            
});

但它没有提醒任何东西!我的流程有问题吗?

【问题讨论】:

  • 控制台有什么错误吗?比如Uncaught ReferenceErrorUncaught SyntaxError 也许?
  • 你没有数组。你需要使用json_encode()
  • @MLeFevre 没有错误没有警告..
  • @Nitish 您希望提醒完整的select 字符串?还是什么?

标签: javascript php arrays cakephp-1.3


【解决方案1】:

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

alert(test);

什么时候应该:

alert('test');

将您的 alert() 调用替换为

alert('<?= $city_more; ?>');

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

编辑:

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

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

【讨论】:

  • Patrick Macial,请在编辑其他答案之前阅读 PHP 文档。 '=' 与 'php.net/manual/en/function.echo.php
  • @rafame 我知道。但这不是一个好习惯,仅此而已。冷静点。
【解决方案2】:

问题

你想要什么?

  • 传递php数组让javascript做什么?
  • JSON 格式将 php 数组传递给 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 2018-12-11
    • 2011-11-27
    • 2017-11-07
    相关资源
    最近更新 更多