我得到一個數組在php中,並將其發送到smarty .tpl文件。如何在smarty中讀取一個php數組到一個java腳本變量?
在smarty我想在Java腳本變量中獲取該數組。
如何做到這一點。請幫我...
我得到一個數組在php中,並將其發送到smarty .tpl文件。如何在smarty中讀取一個php數組到一個java腳本變量?
在smarty我想在Java腳本變量中獲取該數組。
如何做到這一點。請幫我...
由於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,並在我們的情況下,這正是我們需要的。
我認爲它應該簡單的像
<?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}
不要使用'新Array'! 如果你有'新的數組(12)'12個元素的數組將被創建。但是如果你有'新的數組(12,13)'2個元素的數組[12,13]將被創建。 如果您僅將數組分配給一個元素,則代碼將無法按預期工作。請參閱[數組](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array) – DamirR
@DamirR當然你是對的 - 編輯我的答案以糾正錯誤 - 謝謝指出。 – TheOx