2012-11-23 37 views
5

私はtemplate toolkitフレームワークで働いています。私は自分のttファイルにperlハッシュのデータ型を持っています。このハッシュデータ型をjavascriptハッシュデータ型に変換したい。javascriptハッシュにPerlハッシュを繋ぐ方法

コード: テンプレート:

 [% 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の

+3

質問は面白いですが、コードなしで答えることは不可能です。 –

+0

たPerl: 私の$ VARS = { 'バージョン' => 3.14、 '日' => [QW(月火曜結婚木の金は太陽が座っていた)]、 'CGI' => CGI->新しいです()、 'me' => {id '=>' abw '、 ' name '=>' Andy Wardley '、 }、 }; テンプレート: Email [% me.name %]

これはバージョン[%バージョン%]

れたID:[%me.idの%] 名:[%me.nameの%] 今私は私のハッシュをしたいですjavacriptでアクセスできるようにする – Kalai

+0

@Kalaiコメントをコメントに追加するのではなく、質問を編集して(コードフォーマットで)追加してください。それはコメントであるため、読みにくく、見逃しやすいです。 – Thor84no

答えて

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} 
+0

encode_json($ vars - > {'私'})にアクセスする方法; ttファイルには? – Kalai

+0

もしあなたが 'それを'使用していれば、あなたのttで 'JSON :: encode_json'と言うことができます。 – simbabque

+0

このコードを自分のttファイルに入れたら、次のエラーが表示されます "encode_json"がJSONモジュールでエクスポートされていません – Kalai

3

あなたのテンプレートに生のPerlを埋め込むより良い解決策になるそのいずれかが、これを行うために利用可能ないくつかのTTのプラグインがあります。個人的には、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> 
関連する問題