1

我正在尝试制作一个小型 web 应用程序来控制我使用的命令行音乐播放器(mocp),但是当用户按下页面上的按钮时,我无法点击路由。我预计问题与我缺乏 HTML 有关。

代码:

#!/usr/bin/perl
use Mocp;
use Mojolicious::Lite;

my $mocp = Mocp->new;

for my $action ( qw( play pause stop next previous unpause toggle-pause server ) ) {
    get $action => sub {
        my $self = shift;
        $mocp->$action;
        $self->render( 'controls' );
    };
}

get '/' => sub { shift->render( 'controls' ) };
app->start;

__DATA__

@@ controls.html.ep 

%= input_tag 'play', type => 'button', value => 'Play'
%= input_tag 'pause', type => 'button', value => 'Pause'
%= input_tag 'volup', type => 'button', value => 'Volume Up'
%= input_tag 'voldown', type => 'button', value => 'Volume Down'
%= input_tag 'toggle', type => 'button', value => 'Toggle'
%= input_tag 'next', type => 'button', value => '>>'
%= input_tag 'previous', type => 'button', value => '<<'

如果我直接导​​航到路线(例如“/play”),一切都会按预期进行。目标是简单地单击“播放”按钮来执行相关的方法,而不必手动输入路线。我在这个阶段的问题是:

  1. 将这些方法映射到路由是解决此问题的最佳方法吗?
  2. 如果是这样,我如何像在 JavaScript 中一样触发带有“onclick”按钮事件的路由?

非常感谢任何建议。

4

1 回答 1

3

在客户端使用 jQuery,您可以使用$.get()函数触发路由

%= input_tag 'play', type=>'button', value=>'Play', onclick=>"$.get('/play')"

或者

<input type="button" value="Play" onclick="$.get('/play');">

要使用 jQuery,您必须将以下行添加到您的模板中

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>
于 2013-04-20T17:12:54.940 回答