2012-11-23 17 views
5

template toolkit framework çalışıyorum. Benim tt dosyasında bir perl hash veri türü var. Bu hash veri türünü javascript hash veri türüne dönüştürmek istiyorum.javascript hash için convet perl hash nasıl

kodu: şablonu:

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

şimdi javascript

+3

Soru ilginçtir, ancak kodu olmadan yanıtlamak imkansızdır. –

+0

Perl: my $ vars = { 'versiyonu' => 3.14, 'günler' => [qw (Pzt Sal Çar Per Cum oturdu güneş)], 'cgi' => CGI-> yeni(), 'me' => { 'id' => 'abw', 'name' => 'Andy Wardley', }, }; şablonu: Bu sürüm Email [% me.name %]

olduğu [% sürümü%]

Kimliği: [% me.id%] Adı: [% me.name%] şimdi beni karma istiyorum javascript sitesinden erişilebilir. – Kalai

+0

@Kalai Sorunuzu düzenleyin ve ona bir yorum eklemek gibi eklemeyin (kod biçimlendirme ile). Okuması ve kaçırması daha kolay çünkü bir yorum. – Thor84no

cevap

2

CPAN JSON kullanmayı deneyin beni karma erişilebilir olmasını istiyorum. JavaScript Simple Object Notation ve onu doğrudan JavaScript’de kullanıyorsunuz.

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'}); 

Çıktı:

{"name":"Andy Wardley","id":"abw} 
+0

encode_json'a erişim ($ vars -> {'me'}); tt dosyasında? – Kalai

+0

Kullanıyorsanız, tt'nizde JSON :: encode_json' diyebilirsiniz. – simbabque

+0

bu hatayı, bu kodu tt dosyama koyduktan sonra atar "encode_json" JSON modülü tarafından dışa aktarılmadı – Kalai

3

şablonunuza ham Perl gömme daha iyi bir çözüm olacaktır herhangi biri bunu yapmak için kullanılabilecek birkaç TT eklentileri vardır. Şahsen ben JSON::Escape'u tercih ederim, ancak birkaç tane daha var. Daha fazla veya daha az günlük bazda TT yazmanın 5 yıldan fazla bir süredir, henüz [% PERL %] yönergesini kullanmaya başvurmadım. CGI yazmıyorum, sanırım. YMMV.

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

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