繁体   English   中英

Perl Dancer:从表单中获取数据

[英]Perl Dancer: Getting data from forms

我是一个Perl新手,想知道:

  • 如何使用Perl舞者的html表单数据?

我正在努力使用以下示例。 我的index.tt文件上有一个表单,如下所示:

 <form action="/hello/:username" method="get" name="">
        <h3>Please log in </h3>
          <input type="text" name="username" required=""/>
          <input type="password" name="senha" required=""/>               
          <button name="Submit" value="Login" type="Submit">Login</button>              
    </form>     

我想使用表单中的用户名并构建一个返回键入信息的页面。 所以我查看了教程,并在Proyecto.pm完成了以下操作:

package Proyecto;
use Dancer ':syntax';
our $VERSION = '0.1';    


get '/' => sub {
template 'index';
};

get '/hello/:username' => sub {
my $username= params('username');
return "Hola $username";
};

但它不起作用。 你们知道这里缺少什么吗? 谢谢!

<form action="/hello/:username" method="get" name="">

将完全调用/hello/:username而不用和替换。 HTML无法神奇地替换部分源代码 - 无论后端是使用Dancer还是其他任何东西。 (JavaScript可以做到这一点。)

get '/hello/:username' => sub {

匹配所有对/hello/调用,后跟任何字符串,如/hello/chungel/hello/Larry/hello/:username 最后一个将username设置为param('username')

您还添加了一个name="username"的表单字段,该字段最终以一个键的两个值结果(一个来自URL,一个来自表单)。

最后:使用固定的URL作为表单操作:

<form action="/hello" method="get" name="">

get '/hello' => sub {

将用户名作为HTML表单值(和HTTP参数)传递在这里没有任何好处。

如果您确实想要在URL中使用用户名,请首先在路由定义中使用其他名称:

get '/hello/:url_username' => sub {
    return param('url_username');

接下来,您需要使用JavaScript重写表单操作,或者before挂钩before使用Dancer重写目标URL。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM