【问题标题】:DBIC-AJAX: Why is my array "undef"?DBIC-AJAX:为什么我的数组是“undef”?
【发布时间】:2017-07-14 15:23:51
【问题描述】:

我正在使用 ajax 来检索表单中的一些值。后端使用催化剂应用程序。一个特定的字段让我很难检索这些值,我不知道为什么......

考虑 4 个字段,每个字段包含多个值,通过 ajax 发送。

<input name="precedents_mandatory_no" type="checkbox" value="[% precedent.precedent_id -%]">
<input name="precedents_mandatory_yes" type="checkbox" value="[% precedent.precedent_id -%]">
<input name="mandatory_med_no" type="checkbox" value="[% precedent.precedent_id -%]">
<input name="mandatory_med_yes" type="checkbox" value="[% precedent.precedent_id -%]">

根据我的调试,它们都被正确发送和接收:

[debug] "POST" request for "subjects/add" from "127.0.0.1"
[debug] Body Parameters are:
.-------------------------------------+--------------------------------------.
| Parameter                           | Value                                |
+-------------------------------------+--------------------------------------+
| mandatory_med_no                    | 6, 7, 23                             |
| mandatory_med_yes                   | 8, 19                                                              |
| precedents_mandatory_no             | 6, 7                                 |
| precedents_mandatory_yes            | 8, 19, 23                            |

'-------------------------------------+--------------------------------------'

现在,为了捕获这些值,我像这样使用 Catalyst::Parameters。

my $req = $c->request;
my $params = $req->parameters;

my @mandatory_precedent           = ref $params->{precedents_mandatory_yes} ? @{$params->{precedents_mandatory_yes}} : $params->{precedents_mandatory_yes};
my @mandatory_precedent_treatment = ref $params->{mandatory_med_yes} ? @{$params->{mandatory_med_yes}} : $params->{mandatory_med_yes};

据我所知,这应该允许创建一个数组,其中包含“mandatory_med_yes”和“precedents_mandatory_yes”参数中的所有元素。

但是,似乎只有 @mandatory_precedent 填充了这些值,而 @mandatory_precedent_treatment 是 undef。以下调试:

    print STDERR "DEBUG predecedents: \n".Dumper(@mandatory_precedent);
    print STDERR "DEBUG treatments: \n".Dumper(@mandatory_precedent_treatment);

产生如下输出:

DEBUG params: 
$VAR1 = {
          'mandatory_med_no' => [
                                '6',
                                '7',
                                '23'
                              ],
          'mandatory_med_yes ' => [
                                  '8',
                                  '19'
                                ],
          'precedents_mandatory_yes' => [
                                        '8',
                                        '19',
                                        '23'
                                      ],
          'precedents_mandatory_no' => [
                                       '6',
                                       '7'
                                     ],
        };
DEBUG predecedents: 
$VAR1 = '8';
$VAR2 = '19';
$VAR3 = '23';
DEBUG treatments: 
$VAR1 = undef;

那么...任何想法为什么?

【问题讨论】:

  • 有人投票以需要更多代码结束。我不确定他们的意思是什么代码,但也许你可以包括你如何称呼它,或者$params 的完整转储。我认为首先这已经有很多很好的信息,但对我来说并不明显有什么问题。
  • 好吧,不得不添加更多代码实际上指出了问题所在!在mandatory_med_yes 的html 名称中有一个额外的/s。真丢人。
  • 还有橡皮鸭。 :)

标签: ajax perl catalyst


【解决方案1】:

为有问题的参数定义名称时有一个额外的空格...呵呵...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    • 2011-11-25
    • 1970-01-01
    相关资源
    最近更新 更多