我有一个CGI脚本, 我想从perl哈希表输入一个valus到java脚本var tt。 (我在代码中提到了哪些有效,哪些无效)
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",...]}
答案 0 :(得分:3)
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脚本将在那时终止,因此所有变量都将丢失 - 您需要将任何数据存储在数据库中。
答案 1 :(得分:2)
您可以在Perl中使用use JSON模块将对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",...]}