我有一个聪明的数组
$promoFormData Smarty_Variable Object (3)
->value = Array (1)
deliveryDates => Array (3)
0 => Array (2)
startDate => "2013/06/05"
endDate => "2013/06/28"
1 => Array (2)
startDate => "2013/07/05"
endDate => "2013/07/28"
2 => Array (2)
startDate => "2013/08/05"
endDate => "2013/08/28"
我想将此数组deliveryDates用作datepicker中的可用日期。 因此,尝试将以上内容转换为以下Javascript数组
var ranges = [ { start: new Date(2013, 06, 05), end: new Date(2013, 06, 28) },
{ start: new Date(2013, 07, 05), end: new Date(2013, 07, 28) },
{ start: new Date(2013, 08, 05), end: new Date(2013, 07, 28) } ];
我尝试使用以下代码:
<script>
var js_array = new Array();
{{foreach from=$promoFormData.deliveryDates item=array_item key=id}}
{{foreach from=$array_item item=sub_array_item key=index}}
js_array['{{$id}}']['{{$index}}'] = '{{$sub_array_item}}';
{{/foreach}}
{{/foreach}}
console.log(js_array);
</scirpt>
我收到以下错误
TypeError: js_array[0] is undefined
js_array['0']['startDate'] = '2013/06/05';
任何人都应该以正确的方式指导我。
答案 0 :(得分:7)
如果您Smarty security settings允许它(具体地说,它在$php_modifiers
中),您可以使用PHP的json_encode
功能:
var js_array = {$promoFormData.deliveryDates|json_encode};
由于JSON是实际JavaScript对象文字语法的严格子集,因此这应该为您提供有效的JS声明。