私はCatalystデータベースプロジェクトで作業していて、jQuery経由でいくつかのAJAXリクエストを実行しようとしています。画像1.AJAXリクエストからPerl配列を反復する
に見られるようなパラメータは、OK送信されている「診断」および「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.
これらのデバッグは、次を印刷します
これは、私の "配列"が文字列を持つ単なる一次元の変数であることを示唆していますか?私はそれを分割しようとしたが、どちらもうまくいかない。
どちらもかなり良い結果でした。ありがとう、@タンカルス。私は個人的に2番目のオプションは少し読みやすいので、私はその1つに行くと思うが、どちらも働いた:) –
私はいくつかのテストを行っていた、これは2つ以上の要素が送信されているときにのみうまく動作するようです。 1つの要素(要求可能な最小値)が送信されるたびにこのエラーが表示されます: '[error] pbitdb :: Controller :: Subjects-> addの例外が発生しましたstring(" 1 ")をARRAY ref = "/ home/lioneluranl/svn/pbitdb/pbitdb/script/../lib/pbitdb/Controller/Subjects.pm" 119行目の "strict refs"を参照してください。 " ...ここでは" 1 "は送信された値です...参照される行は、リストを宣言した行です。 ' my @type_consents = @ {$ params - > {type_consent}}; ' アイデアはありますか? –
IMOでは、スカラー値*または*配列(参照)値を持つことができるキーである動的型を持つのは貧弱です。しかし、呼び出しているAPIがあなたの管理下にない場合、コード内でそれを処理する必要があります: 'my @type_consent = ref $ params - > {type_consent}? @ $ params - > {type_consent}}:$ params - > {type_consent}; '参照として保持するのと似ています:' my $ tc = ref $ params - > {type_consent}? $ params - > {type_consent}:[$ params - > {type_consent}] ' – Tanktalus