将Perl变量传递给JavaScript函数

时间:2015-04-23 16:30:13

标签: javascript html cgi

我需要将Perl变量传递给JavaScript函数。

print "<input type='radio' name='envelopeid' value='$values[0]' onclick='SetName(this.value,$values[1]);'>";

其中是Perl中的数组变量,而SetName(a,b)是JavaScript函数。

当我传递一个参数,即 SetName(this.value)时,上述JavaScript函数工作正常,但如果我传递2个参数,它就不起作用。 (我已将JavaScript函数更改为相应地接受2个参数)

上面的功能不会在onclick上启动,而是会在浏览器的状态栏中引发错误。

如果要将Perl变量$ values [1]传递给JavaScript函数,必须更改哪些内容?

1 个答案:

答案 0 :(得分:1)

您实际要做的是传递$values[0]$values[1]

要将值传递给JS函数,需要由JS文字创建。 JSON是JS的子集,因此可以使用JSON编码器来创建此文字。

use JSON::XS qw( );
my $json = JSON::XS->new->allow_nonref;
my $val1_jslit = $json->encode($values[1]);

JS和$values[0]将嵌入HTML中,因此您需要进行适当的编码。

use HTML::Entities qw( encode_entities );
my $val0_html       = encode_entities($values[0]);
my $val1_jslit_html = encode_entities($val1_jslit);

然后,你可以进行插值。

print "<input ... value='$val0_html' onclick='SetName(this.value, $val1_jslit_html);'>";