perl哈希表和javascript var
我有一个CGI脚本, 我想从perl哈希表中输入一个valus到java脚本var tt。 (我在代码中提到什么可行,什么不可行)perl哈希表和javascript var
的Perl:
%devices;
push @{$devices{$entity} }, $fname;
JS:
\$('#example tr').click(function(){
\$(this, 'tr').each(function(index, tr) {
var lines = \$('td', tr).map(function(index, td) {
return \$(td).text();
});
var d = lines[0];
var test = '@{$devices{'192.116.153.32'}}'; // working
var tt = '\@\{\$devices{' + "\'" + d + "\'" + "\}\}"; // Not working
alert(tt);
警报将打印出类似这样:
{"192.116.153.32":["examle1.txt","examle2.txt",...]}
可以use JSON模块用Perl引用转换为Perl的哈希字符串包含JavaScript关联数组:
use JSON; # imports encode_json, decode_json, to_json and from_json.
# simple and fast interfaces (expect/generate UTF-8)
$utf8_encoded_json_text = encode_json \%devices;
JS:
\$('#example tr').click(function(){
\$(this, 'tr').each(function(index, tr) {
var lines = \$('td', tr).map(function(index, td) {
return \$(td).text();
});
var d = lines[0];
var test = '@{$devices{'192.116.153.32'}}'; // working
var tt = '$utf8_encoded_json_text'; // working
alert(tt);
警报将打印出类似这样:
{"192.116.153.32":["examle1.txt","examle2.txt",...]}
谢谢, 对我而言,你能解释一下怎么做吗? – user3485339
@ user3485339我已经添加了一个示例。 – alex
JavaScript和Perl是不同的语言。 JS代码和CGI脚本将在不同的计算机上运行。
-
CGI脚本创建一个页面,然后传输到浏览器。这个页面的数据类型无关紧要,任何JS代码都只是该脚本的普通数据。例如,您的摘录可能会变成
$('#example tr').click(function(){ $(this, 'tr').each(function(index, tr) { var lines = $('td', tr).map(function(index, td) { return $(td).text(); }); var d = lines[0]; var test = 'the corresponding device'; // working var tt = '@{$devices{' + "'" + d + "'" + "}}"; // Not working alert(tt);
这是浏览器看到的内容。 Perl代码对浏览器没有意义。
然后浏览器呈现页面并执行任何JS脚本。此时,再也没有与CGI脚本的连接。
如果要连接到服务器,可以使用AJAX请求。但是请注意,生成页面的第一个CGI脚本将在此之前终止,因此所有变量都将丢失 - 您需要将任何数据存储在数据库中。
注意:任何时候你在混合这样的语言时,建立你的javascript是有帮助的在perl中使用单引号字符串。这样你就不必摆脱所有的美元符号''''。 – Miller