【问题标题】:Accessing Perl Array in JavaScript在 JavaScript 中访问 Perl 数组
【发布时间】:2023-03-08 19:13:01
【问题描述】:

我在 perl 中有一个由其他 perl 模块生成的大小未知的数组。现在,正是我想找出传递给 jquery 函数的值是否存在于 perl 数组中。

有没有办法可以逐个元素比较输入值与 perl 数组中的每个值?

我环顾四周,似乎可以通过提供索引来访问 jquery 中的 perl 数组,但我们不知道数组的大小。所以我不知道什么时候停止。

我的石匠代码看起来类似于:

<%perl>
    my @testArray = [call to some other perl module to get the values]
</%perl>

<script type="text/javascript">
    function checkIfValExistsInTestArray(val) {
        // Code to test if "val" exists in "@testArray". Returns boolean true/false.
    }
</script>

【问题讨论】:

  • 您能与我们分享您的尝试吗?
  • 因为它们都在不同的环境和不同的时间运行,所以您需要更加具体
  • @charlietfl 我编辑了该语句并添加了我的代码的示例场景。我对这项技术相当陌生,因此查询半熟。
  • @JayBlanchard 我遵循以下示例:forums.devshed.com/perl-programming-6/… 但由于这不适用于未知大小的数组,所以我迷路了。在达到这种方法之前保留我尝试过的所有内容不适合这种情况,因此不进行描述。
  • 除非您打算将整个数组输出为 javascript 变量,否则您可以调用 ajax 来验证变量

标签: javascript jquery perl mason


【解决方案1】:

要检查是否存在,您需要一个哈希。传输数据的一种简单方法是使用JSON 对其进行编码。

% use JSON qw( );

<script type="text/javascript">

var testArray = <% JSON->new()->encode({ map { $_ => 1 } get_values() }) %>;

function checkIfValExistsInTestArray(val) {
   return testArray[val];
}

</script>

例如,如果get_values() 返回appleorange,你会得到

<script type="text/javascript">

var testArray = {"apple":1,"orange":1};

function checkIfValExistsInTestArray(val) {
   return testArray[val];
}

</script>

我不认识梅森,所以可能会有错误,但你明白了。

【讨论】:

  • 感谢您的快速回复。万分感谢。查看您的编辑版本,我清楚地知道我们在这里要做什么。您正在将 perl 版本的数组列表序列化为 JSON 映射,其值为 1 并尝试查找映射。我不知道正在使用的 JSON 模块,但这是我可以从您的代码中提取的内容。如有错误请指正。
  • 没错。 JSON 是 JS 的子集,因此您基本上是在生成 JS 代码来创建可以查询的 Object。
猜你喜欢
  • 2014-10-13
  • 2016-12-12
  • 1970-01-01
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
  • 2018-12-23
  • 2019-06-12
相关资源
最近更新 更多