Сброс текста на кнопке с использованием значения Catalyst, установленного на тайнике - PullRequest
1 голос
/ 13 мая 2019

Я новичок в Catalyst и Perl - но моя проблема в том, что у меня есть кнопка в файле "tt" Catalyst, и я хотел бы отобразить значение, хранящееся в тайнике. После щелчка файл контроллера 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>

Это функция Javascript для вызова ajax:

    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;
 }

Я ожидаю, что при нажатии на кнопку текст кнопки изменится на «Другое значение», но вместо этого он останется прежним.

...