0

我正在检索一个 smarty 数组“数据”,我想将它存储在一个 javascript 变量“存储”中:

{if isset({$data})}
        <script type="text/javascript">
            var store = {ldelim}{rdelim};
            {foreach from=$data key=k item=v}
                var index = {$k};
                store.index = {$v};
            {/foreach}
                alert(store);
        </script>
    {/if}

但我没有警报输出。有人可以帮忙吗?

Rmk:我需要它来运行它

$("input").each(function(index) {
                    return this.value = store.index;
                });

编辑:在源代码中,我得到 var store = {};

4

2 回答 2

1

与其尝试通过 Smarty 创建 javascript 对象/数组的冗长且难以阅读的方式,不如试试这个;

$arr = json_encode(array(array('key1' => 'value1'), array('key2' => 'value2')));
$smarty->assign('data', $arr);

并在模板中;

<script>
var store = {$data};
</script>

因此,我们让 PHP 为我们创建一个有效的 javascript 对象并将该字符串分配给 smarty,Smarty 只是创建了一个变量并分配了该字符串。

于 2013-01-24T12:57:04.947 回答
-2

你写错了标签。在 Smarty 中,要启用 JavaScript,您必须使用{literal}标签。

例如:

{literal}
<script type="text/javascript" language="javascript">
// All your regular javascript code.....
</script>
{/literal}
于 2013-01-24T12:45:18.183 回答