gpt4 book ai didi

arrays - 从 AJAX 请求迭代 Perl 数组

转载 作者:行者123 更新时间:2023-12-01 04:50:23 26 4
gpt4 key购买 nike

我正在处理一个 Catalyst 数据库项目并尝试通过 jQuery 执行一些 AJAX 请求。参数发送正常,如图 1 所示。
List of parameters and values received in AJAX request
请注意,“diagnosis”和“type_consents”(以及它们对应的日期)都是作为值数组(值 1、值 2、...值 n)发送的。
现在进行服务器端处理, Catalyst::Request 允许通过 $req->parameters 轻松检索数据,但它似乎对我不起作用。
我是这样做的:

my $params = $c->request->parameters; #Retrieving all parameters

my @type_consents = $params->{type_consent};
my @date_consents = $params->{date_consent};
my @diagnosis = $params->{diagnosis};
my @date_diagnosis = $params->{date_diagnosis};
然后我需要循环这些数组并对每对值进行插入 (diagnosis|date , consent|date) .另外,我需要存储和处理所有事务并在 eval() 中一次性执行它们。块,所以我这样做:
my %transactions;

# Diagnosis
my $diag_index = 0;

foreach my $key ( 0 .. $#diagnosis ) {
$transactions{diagnosis}{$diag_index} = $diagnosis_mod->new(
{
subject_id => $subject_id,
diagnosis_date => $date_diagnosis[$key],
diagnosis => $diagnosis[$key],
diagnosis_comment => "",
suggested_treatment => ""
}
);

print STDERR "\n" . $date_diagnosis[$diag_index];
print STDERR "\n DEBUG: $date_diagnosis[$diag_index] | $diagnosis[$diag_index] | key: $diag_index";
print STDERR "\n DEBUG2:" . Dumper( @date_diagnosis ) . " | " . Dumper( @diagnosis );

$diag_index++;
}

# I'm avoiding evaluating and performing the transactions so neither eval() nor database impact are shown above.
这些调试打印以下内容:
Debugs of array iteration
这是否表明我的“数组”只是一个带有字符串的一维变量?我尝试拆分它,但这也不起作用。

最佳答案

您可以存储在散列中的唯一值是标量。因此,$params->{type_consent}是标量,不是列表。但是,由于对事物的引用(标量、数组、散列、对象、glob 等)也是标量,因此您可以将引用存储在散列中。

什么 $params->{type_consent}因此,is 是对数组的引用,而不是数组或列表本身。

那么,我认为您想要的是将其分配给 my $type_consent = $params->{type_consent};然后使用 @$type_consent作为您的数组(因此它们都指向同一个数组 - 通过 @$type_consent 更改某些内容会更改 %$params 中的数组),或者通过说 my @type_consent = @{$params->{type_consent}}; 复制数组.

我选择使用哪一个视情况而定,但我倾向于引用选项,如果只是为了在没有理由复制它的情况下降低内存使用量。

关于arrays - 从 AJAX 请求迭代 Perl 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41798826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com