perl - 使用在 stash 上设置的 Catalyst 值重置按钮上的文本
问题描述
我是 Catalyst 和 Perl 的新手——但我的问题是我在 Catalyst“tt”文件上有一个按钮,我想显示存储在存储中的值。单击后,Perl 控制器文件将通过 ajax 调用更改该值。但是,由于某种原因,这不起作用。我想知道 Catalyst 是否在不“刷新”页面的情况下不重置存储中的值?
我可以使用 getElementsById 并更改文本 - 但喜欢让控制器处理它。
这是file.tt中的按钮
<input type="button" class="btn btn-primary btn-block" id="code_button" href="#" onClick="get_codes();" value="[% Catalyst.stash.button_description %]"></input>
这是执行 ajax 调用的 Javascript 函数:
function get_codes() {
jQuery.ajax({
async: false,
type: 'POST',
url: '/grl/get_codes',
dataType: 'json',
success: function( data ) {
console.log(data);
document.getElementById("grl_button").value="New Value"; <--- Works of course
document.getElementById("grl_button").value="[% Catalyst.stash.button_description %]"; <--- this doesn't update to new value set in the controller
console.log(document.getElementById("code_button").value);
}
});
};
这是来自 Perl 控制器的代码:
sub get_codes : PathPart('get_codes') Chained('grl') Args(0) {
my ( $self, $c ) = @_;
$DB::single=1;
my $button_description = "Another Value";
$c->stash->{button_description} = $button_description;
my $ret = {error=>0,message=>"Success?"};
$c->res->body(encode_json($ret));
$c->detach;
}
我希望单击按钮实际上会使按钮的文本更改为“另一个值”,但它保持不变。
解决方案
推荐阅读
- android - 片段中的不工作事件 setOnClickListener
- f# - 如何将给定类型的对象转换为记录?
- xamarin - Xamarin.Forms HttpClient 无法连接错误
- angular - 使用 *ngIf ,按钮以角度消失
- java - 使用 MockMvc .jsonpath() 方法测试 API 响应正文时如何在括号 [] 内输入
- prometheus - 在 Grafana 中将 Prometheus 计数器绘制为事件数
- r - 同一列上有两个值的条形图
- class-validator - 如何使用类验证器有条件地验证子 DTO?
- r - 如何使用传单解决“不知道如何从类标准通用对象获取路径数据”的问题
- ios - 布局设计的哪些场景需要动态高度标签和一个文本字段并排?