http://qs1969.pair.com?node_id=11114415


in reply to Mojolicious refresh

<update> Your Mother beat me to it by seconds :-) </update>

IMHO, the best way nowadays is JavaScript:

#!/usr/bin/env perl use Mojolicious::Lite -signatures; get '/' => sub ($c) { $c->render(template => 'index'); } => 'index'; get '/dynupd' => sub ($c) { $c->render(json => { time => time }); } => 'dynupd'; app->start; __DATA__ @@ layouts/main.html.ep <!DOCTYPE html> <html> <head><title><%= title %></title></head> <body> %= content </body> </html> @@ index.html.ep % layout 'main', title => 'Hello, World!'; <div>Hello, World!</div> <div id="dyn_upd">Fetching, please wait...</div> <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> <script> function updateDynamic() { $.ajax({ url: '<%= url_for('dynupd') %>', timeout: 1000 }) .done( function( data ) { $('#dyn_upd').text(data.time); }) .fail( function( jqXHR, textStatus, errorThrown ) { $('#dyn_upd').text("Update Failed: "+textStatus +" / "+jqXHR.status+" "+errorThrown); }); } $(function () { updateDynamic(); setInterval(updateDynamic, 2000); }); </script>