【问题标题】:Passing a Perl variable to Javascript function called by HTML将 Perl 变量传递给 HTML 调用的 Javascript 函数
【发布时间】:2014-02-05 16:55:53
【问题描述】:

我有这个代码

Perl

my $var1 = to_json \@an_array1;
my $var2 = to_json \@an_array2;

HTML

<select id="example" title="example" onchange="doThis(<% $var1, $var2 %>)">

JavaScript

function doThis(var1, var2){
    alert(var1);
    alert(var2);
};

但是它警告 var1 和 var2 未定义,因此没有传递参数。 (n.b. 它在 Perl 中明确定义,做了一个 Dumper!)。

谁能帮助将 Perl 变量传递给 JavaScript 的正确方法?我已经搜索了该网站,但找不到任何可以帮助我解决我所问问题的内容。

谢谢

【问题讨论】:

  • 您需要查看页面在浏览器中的外观。
  • Perl 是一种服务器端语言,而 JavaScript 是一种客户端语言。这意味着你的 Perl 在 JavaScript 被处理之前就已经被处理了。你在 Perl 中声明的所有变量都消失了。
  • @Pointy 的意思是 - 在浏览器中加载页面并检查源 - `onChange="doThis()"> 看起来如何?

标签: javascript html perl


【解决方案1】:

我不确定你的模板引擎是什么,但这对我来说是可疑的,

<select id="example" title="example" onchange="doThis(<% $var1, $var2 %>)">

对比

<select id="example" title="example" onchange='doThis("<% $var1 %>", "<% $var2 %>")'>

注意逗号和引号 另外,确保 &lt;% %&gt; 是 HTML 转义内容。现在这是否安全是一个完全不同的问题。您将希望在 perl 中确定 $var1$var2 没有 " 也不以终端 \ 结尾。会变丑的。

【讨论】:

  • 我不知道这里使用的(未指定的)模板语言,但如果 JSON 包含引号,那不会失败吗?看起来像是注入错误。
猜你喜欢
  • 2018-10-21
  • 1970-01-01
  • 2017-01-22
  • 1970-01-01
  • 2016-08-21
  • 1970-01-01
  • 2015-05-02
  • 1970-01-01
相关资源
最近更新 更多