使用隐藏中设置的Catalyst值重置按钮上的文本

时间:2019-05-13 14:28:48

标签: perl button catalyst

我是Catalyst和Perl的新手,但是我的问题是Catalyst“ tt”文件上有一个按钮,我想显示存储在存储库中的值。单击后,Perl控制器文件将通过ajax调用更改值。但是,由于某种原因,这是行不通的。我想知道Catalyst是否不对页面进行“刷新”就不会重置存储中的值吗?

我可以使用getElementsById并更改文本-但想让控制器来处理。

这是文件中的按钮。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;
 }

我希望单击按钮实际上会将按钮的文本更改为“另一个值”,但实际上保持不变。

0 个答案:

没有答案