Javascript 为什么不是';难道我的数据没有被添加到Mojolicous的仓库里吗?
我对Mojolicious和藏品有意见,我想我可能只是不理解它的工作方式? 我有一个带有2个组合框的页面,当第一个条目发生变化时,我希望更新第二个条目中的选项Javascript 为什么不是';难道我的数据没有被添加到Mojolicous的仓库里吗?,javascript,jquery,perl,mojolicious,Javascript,Jquery,Perl,Mojolicious,我对Mojolicious和藏品有意见,我想我可能只是不理解它的工作方式? 我有一个带有2个组合框的页面,当第一个条目发生变化时,我希望更新第二个条目中的选项 sub devicecommandset { my $self = shift; my $device = $self->param('device') || ''; my @commandsets = $self->db->resultset('CommandSet')->search_command
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' );
}
因此,我添加了一个如下所示的事件处理程序,它调用我的控制器子例程“devicecommandset”,然后将DBIx查询的结果放入一个哈希数组中,并将其添加到我的存储库中
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' );
}
然后我只是呈现一些良性文本。我的子例程被调用,并且在“@commandset”中有预期的内容。但是,我无法在浏览器控制台的隐藏中看到它(我正在调试模式下运行)
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' );
}
我真的需要修改DOM来填充隐藏吗?基本上,我只是试图从我的请求中获取数据,以填充组合框选项
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' );
}
在我的模板中
$(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' );
}
在我的控制器中
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' );
}
您基本上是在日志中打印转储程序,而不是在浏览器中。您的隐藏未在渲染中使用,因为您没有引用它。使用内联渲染类型和“转储程序”辅助程序。 尝试:
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' );
}
$self->stash(commandset=>\@commandset);
$self->render(内联=>'';