如何在smarty中读取PHP数组到Java脚本变量
how to read a php array to a java script variable in smarty?
我在php中得到一个数组,并将其发送到smarty .tpl文件。
在smarty中,我想在java脚本变量中获得该数组。
如何做这个。
我觉得应该像
这样简单<?php
$_array = array('apple','banana','durian');
$js_array = '[' . implode(',',$_array) . ']';
?>
<script type="text/javascript">
var iArray = <?php echo $js_array;?>;
</script>
在php文件中像这样添加
<?
$arr = array(1,2,3,4,5);
$jsarr = implode(',',$arr);
$smarty->assign(arr,$jsarr);
?>
在模板文件中像这样使用
<html>
<head>
<script type="text/javascript">
var array = new Array({$arr});
</script>
</head>
</html>
用[]
代替new Array
比较好。你需要把值放在引号里并转义——以确保不会破坏js。我不喜欢在php中预处理数据然后赋值给smarty。这解决了所有潜在的问题:
<script type="text/javascript">
var arr=[
{foreach name=i from=$myarray item=v}
'{$v|escape:"javascript"}'
{if !$smarty.foreach.i.last},{/if}
{/foreach}
];
</script>
如果你的数组只包含整数,你可以使用{$v|intval}
由于PHP是在任何JS之前解析的,所以您可以简单地将PHP数组中的值添加到JS函数中:
如果PHP中有这个数组:
$my_array = array("a","b","c","d","e");
然后你可以用下面的代码初始化一个具有相同值的JS数组:
<?php
//PHP snippet to create a comma-delimited string with each value of $my_array
//surrounded by quotation marks. Quotes not needed if values in array are numeric.
$array_vals = '"' .implode('","', $my_array) .'"';
?>
<script type="text/javascript">
var my_array = [<?php echo $array_vals;?>];
</script>
最简单的方法是使用json:
<script type="text/javascript">
var arr = <?= json_encode($arr) ?>;
</script>
json_encode()
获取php数据并将其转换为json,在我们的情况下,这正是我们需要的。
相关文章:
- Java中的数组,具有类似Javascript数组的性质
- 如何在java脚本中传递对象数组
- Java Script将对象方法映射到数组中的对象
- 如何在Java Script中比较二维数组和一维数组,并将常见数据存储在另一个数组中
- 将此 JavaScript 数组转换为 java
- 重建有角度的java脚本数组对象
- 如何在javascript中生成数组对象的数组,然后将其传递给java
- 将JSON数组从PHP传递到Java脚本
- 如何使用java脚本和php获取多维数组数据
- Java 脚本数组分配错误
- 将 Json 数组转换为 java 脚本数组
- 为什么我的 javascript 数组从 java 对象中获取未定义的值
- 相当于JavaScript数组的Java'Collection.addAll'
- Java 脚本 - 识别特定字符串并将它们推送到数组中
- Java 脚本子字符串通过字符串数组
- 创建一个字节数组并获得相同的 Java 和 JavaScript 输出
- 从数组 java 脚本中过滤数据
- 通过从 PHP 传入数组,在 java 脚本中填充项目数组及其值
- 从 Javascript 和 Java 返回的数组中填充下拉列表
- 使用 GWT 将双精度 JS 数组(可能包含空条目)集成到 Java 对象的适当方法