Я работаю в шаблоне инструментария. У меня есть perl хэш-тип данных в моем файле tt. Я хочу преобразовать этот хэш-тип данных в jashcript хэш-тип данных.
код: шаблон:
[% 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
Для этого доступно несколько плагинов TT, любое из которых было бы лучшим решением, чем встраивание raw perl в ваш шаблон. Лично я предпочитаю JSON:: Escape, но есть и другие. За более чем 5 лет написания ТТ более или менее ежедневно, мне еще не приходилось прибегать к использованию директивы [% PERL %]
. Полагаю, я не пишу CGI. YMMV.
[%- USE JSON.Escape( pretty => 1 );
SET me = { id => 'abw', name => 'Andy Wardley' };
...
-%]
<script>
function callme() {
var me = [% me.json %]
...
</script>
Попробуйте использовать JSON из CPAN. Это 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}
use
d, вы должны иметь возможность сказать JSON::encode_json
в вашем tt.