【发布时间】:2017-06-09 20:53:40
【问题描述】:
我正在尝试从 AJAX 请求(使用 Catalyst)动态创建值列表,如下所示:
my @listofvalues = @{$params->{parameter_with_many_values}};
然后我遍历列表以进行数据库插入(每个值一个)。由于我需要遍历上面的各种列表,因此我需要访问列表的索引。我目前正在这样做:
foreach my $key (0 .. $#listofvalues){
$table_model->new({
field1 => $listofvalues[$key],
field2 => $x,
field3 => $another_listofvalues[$key]
field4 => $yet_another_listofvalues[$key]
});
}
当请求中收到两个或更多元素时,这似乎可以正常工作。每当收到单个元素时,我都会收到类似的错误
[error] Caught exception in pbitdb::Controller::Subjects->add "Can't use string ("1") as an ARRAY ref while "strict refs" in use at /home/lioneluranl/svn/pbitdb/pbitdb/script/../lib/pbitdb/Controller/Subjects.pm line 119."
在这种情况下,1 是收到的值,第 119 行 是声明 @listofvalues 的行。
现在我已经尝试了几种方法来解决这个问题,但还没有发现任何可以双向工作的方法(对于单个值或各种值)。有什么建议吗?
【问题讨论】:
-
问题在于设置
$params->{parameter_with_many_values}的任何代码。它以文字字符串“1”结束。 -
field4前少了一个逗号。 -
这意味着 $params->{parameter_with_many_values} 不包含对数组的引用。它包含标量值“1”。