【问题标题】:Why isn't my data been added to the stash in mojolicious?为什么我的数据没有被添加到 mojolicious 的存储中?
【发布时间】:2014-12-08 05:33:18
【问题描述】:

我对 Mojolicious 和存储有疑问,我想我可能只是不了解它的工作方式? 我有一个带有 2 个组合框的页面,当第一个条目更改时,我希望更新第二个中的选项。

所以我添加了一个如下所示的事件处理程序,然后调用我的控制器子例程“devicecommandset”,然后将 DBIx 查询的结果放入我添加到我的存储中的哈希数组中。

然后我只是渲染一些良性文本。我的子程序被调用,'@commandsets' 中有预期的内容。但是我在浏览器控制台的存储区中看不到它(我正在调试模式下运行)。

我是否需要实际修改 DOM 才能填充存储?基本上我只是想从我的请求中取回数据以填充组合框选项。

在我的模板中

$(document).ready(function() {

 $('select:not([name*="command"])').live('change', function (e) {
     $.get('devicecommandset', { device: $(this).attr("value") },
          function (data) {
                alert("Made it this far");
           });
      });         
 });

在我的控制器中

sub devicecommandset {
  my $self = shift;
  my $device = $self->param('device') || '';
  my @commandsets = $self->db->resultset('CommandSet')->search_commandsets_by_devicename($device); 
  $self->stash(commandsets => \@commandsets );
  print Dumper(@commandsets);
  $self->render(text => 'success' );
 }

【问题讨论】:

    标签: javascript jquery perl mojolicious


    【解决方案1】:

    您基本上是在将转储程序打印到日志,而不是浏览器。您的存储未在渲染中使用,因为您没有引用它。使用内联渲染类型和“dumper”助手。 尝试:

    $self->stash(commandsets => \@commandsets );
    $self->render( inline => '<%= dumper $commandsets %>' );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 2021-08-14
      • 2017-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多