5

我正在使用模板工具包框架。我的 tt 文件中有一个 perl 哈希数据类型。我想将此哈希数据类型转换为 javascript 哈希数据类型。

代码: 模板:

        [% PERL %]
        use JSON qw(encode_json);

        my $vars = {

            'version'  => 3.14,
            'days'     => [ qw( mon tue wed thu fri sat sun ) ],
            'cgi'      => CGI->new(),
            'me'       => {
                'id'     => 'abw',
                'name'   => 'Andy Wardley',
            },
        };

        my $json = encode_json($vars->{'me'});
    [% END %]


 <script>
   function callme(){
   var me = [% $json %]
  }
</script>

现在我希望在 javascript 中可以访问 me 哈希

4

2 回答 2

3

有几个 TT 插件可以做到这一点,其中任何一个都是比将原始 perl 嵌入到模板中更好的解决方案。就个人而言,我更喜欢JSON::Escape,但还有其他一些。在每天或多或少地编写 TT 的 5 年多的时间里,我从未不得不求助于使用该[% PERL %]指令。我想我不是在写 CGI。YMMV。

[%- USE JSON.Escape( pretty => 1 );
    SET me = { id => 'abw', name => 'Andy Wardley' };
...
-%]

<script>
    function callme() {
    var me = [% me.json %]
    ...
</script>
于 2012-11-27T06:00:36.607 回答
2

尝试使用来自 CPAN 的JSON 。它是JavaScript 简单对象表示法,您可以直接在 JavaScript 中使用它。

use JSON qw(encode_json);

my $vars = {

    'version'  => 3.14,
    'days'     => [ qw( mon tue wed thu fri sat sun ) ],
    'cgi'      => CGI->new(),
    'me'       => {
        'id'     => 'abw',
        'name'   => 'Andy Wardley',
    },
};
print encode_json($vars->{'me'});

输出:

{"name":"Andy Wardley","id":"abw}
于 2012-11-23T12:47:39.113 回答