繁体   English   中英

将Perl数组分配给Javascript变量

[英]Assign a Perl Array to Javascript variable

我试图将Perl代码与JavaScript集成在一起,遇到一个问题,我只是想查看我存储在Perl中的数组的输出。 以下代码为我提供了存储在数组中的适当元素,但是我看不到JavaScript中的元素。

my @list_of_vendors;
while(!$resultSet->EOF) {
push @list_of_vendors, $resultSet->Fields("vendor")->Value;
    $resultSet->MoveNext;
}

print "The First Vendor is: " . $list_of_vendors[0]. "\n";

打印出来The First vendor is: 3D Systems以下代码似乎没有给我我想要的结果...

print <<ONE;
<html>
<body>
<h4> Test Vendor Array Javascript </h4>

<p id="demo"</p>

<script type="text/javascript" language="JavaScript">
var myVendorArray = @list_of_vendors;
document.write('<p> $list_of_vendors[0] is the same as myVendorArray[0] </p>');

</script>
</body>
</html>
ONE

我以为这会给我3D Systems is the same as 3D Systems但是它给html屏幕一个空白。

谁能向我指出我可能做错了什么? 或为我指出正确的方向,以使用notepad ++或其他有用的IDE对此进行调试。 谢谢一大堆!

您代码的heredoc中的所有内容均由Perl内插,但客户端将其解释为JavaScript。 所以如果你写

@list_of_vendors = ("Alice","Bob","Charlie");
...
print <<EOF;
...
<script>
var list_of_vendors = @list_of_vendors;
...
EOF

客户将会看到类似

var list_of_vendors = Alice Bob Charlie;

Perl具有很好的功能,可以将Perl数据结构转换为JSON表示法,这很容易被JavaScript理解,因此您应该执行以下操作:

use JSON;
$list_of_vendors_json = encode_json(\@list_of_vendors);
...
var list_of_vendors = $list_of_vendors_json;
...

在这种情况下,浏览器将显示以下内容:

var list_of_vendors = ["Alice","Bob","Charlie"];

而其余的代码将按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM