我需要将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函数,必须更改哪些内容?
答案 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);'>";