有谁知道如何从javascript访问哈希表会话变量?我可以在perl中创建一个并像这样打印出来:
my $session = new CGI::Session(undef, undef, {Directory=>'/tmp'});
$session->param("controllerHash", \%controllerHash);
my $hash_ref = $session->param('controllerHash');
print Dumper $hash_ref;
但是我不知道如何从javascript访问它。
我尝试过这样的事情:
function billingViewControllerChanged() {
var controllerHash = Session['controllerHash'];
for (var k in controllerHash) {
console.log('key: '+k +', value: ' +controllerHash[k]);
}
}
但是我在firefox控制台中看到了这一点:
ReferenceError: Session is not defined
有任何想法吗?
最佳答案
最简单的方法是使用JSON序列化Perl数据结构,JavaScript可以原生解析该结构。
use JSON;
my $session = new CGI::Session(undef, undef, {Directory=>'/tmp'});
$session->param("controllerHash", \%controllerHash);
my $hash_ref = $session->param('controllerHash');
my $controllerHashJSON = JSON->new->encode( $hash_ref );
print <<"__EOF__"; # in CGI, STDOUT is output to the client
function billingViewControllerChanged() {
var controllerHash = $controllerHashJSON;
for (var k in controllerHash) {
console.log('key: '+k +', value: ' +controllerHash[k]);
}
}
EOF