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でアクセスできるようにしたい

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 Simple Object Notationであり、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 に答える