Здравствуйте! Имеется вот такое автономное приложение на Dancer2:
app.pl
| Код | #!/usr/bin/env perl use Dancer2;
use Data::Section::Simple qw/get_data_section/; use DBI; use utf8;
my $index = get_data_section('index.html');
# Settings #--------------------- set appname => "LovelyIO::And::AJAX::In::Dancer2"; set charset => "UTF-8"; set serializer => 'JSON'; #---------------------
get '/' => sub { 'hello' };
any ['get', 'post'] => '/login' => sub { if (request->method() eq 'POST') { my $username = param 'username'; my $password = param 'password';
my $dbfile = 'mydb.db'; my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile","","") or die $DBI::errstr;
my $statement = qq{SELECT id FROM users WHERE username=? and password=?};
my $sth = $dbh->prepare($statement) or die $dbh->errstr; my $rv = $sth->execute($username, $password) or die $sth->errstr;
my ($userID) = $sth->fetchrow_array;
if ($userID) { redirect '/'; } else { if (request->is_ajax) { response->content_type('application/json'); return {error => 'username or password is wrong'}; } } }
return $index; };
dance;
__DATA__ @@ index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Very simple login using Perl, Lovely.IO, Ajax, JSON and SQLite</title> <link rel="stylesheet" type="text/css" media="screen, projection" href="http://www.blueprintcss.org/blueprint/screen.css" /> <link rel="stylesheet" type="text/css" media="screen, projection" href="http://www.blueprintcss.org/blueprint/plugins/buttons/screen.css" /> <link rel="stylesheet" type="text/css" media="print" href="http://www.blueprintcss.org/blueprint/print.css" />
<!--[if IE]><link rel="stylesheet" type="text/css" media="screen, projection" href="http://www.blueprintcss.org/blueprint/ie.css"><![endif]--> <script type="text/javascript" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script type="text/javascript"> $(document).ready(function(){ $("#loginForm").submit(function() { // loginForm отправлена
$.post('/login', { "username": $('#username').val(), "password": $('#password').val() }, function(data, textStatus, jqXHR){ if (data.error) { // сценарий возвратил ошибку $('#loginResult').text("data.error: " + data.error).addClass("error"); } });
$('#loginResult').fadeIn(); return false; }); }); </script>
<style type="text/css"> #loginContent { width: 350px; margin: 100px auto; } button[type] { margin: 0.5em 0; } dd {margin: 0; padding: 0; } </style> </head> <body> <div id="loginContent" class="container"> <div id="loginResult" style="display:none;"></div> <form id="loginForm" name="loginForm" method="post" action="/login"> <fieldset> <legend>Enter information</legend>
<dl> <dt><label for="username">Username</label></dt> <dd><input type="text" id="username" name="username" class="text" size="20" /></dd> <dt><label for="password">Password</label></dt> <dd><input type="password" id="password" name="password" class="text" size="20" /></dd> </dl>
<button type="submit" class="button positive"><img alt="ok" src="http://www.blueprintcss.org/blueprint/plugins/buttons/icons/tick.png" /> Login</button> </fieldset> </form> </div> </body> </html>
|
Запускаю с помощью $ plackup app.pl
Подскажите пожайлуста, как сделать редирект на роут '/', чтобы на выходе появилось 'hello': get '/' => sub { 'hello' };
Сейчас никакого редиректа не происходит, хотя в лог пишется, что он прошел:
127.0.0.1 - - [18/Dec/2013:14:01:41 +0200] "GET /login HTTP/1.1" 200 4694 "-" "Opera/9.80 (X11; Linux x86_64) Presto/2.12.388 Version/12.16" 127.0.0.1 - - [18/Dec/2013:14:01:49 +0200] "POST /login HTTP/1.1" 302 0 "http://localhost:5000/login" "Opera/9.80 (X11; Linux x86_64) Presto/2.12.388 Version/12.16" 127.0.0.1 - - [18/Dec/2013:14:01:49 +0200] "GET / HTTP/1.1" 200 5 "http://localhost:5000/login" "Opera/9.80 (X11; Linux x86_64) Presto/2.12.388 Version/12.16"
Подскажите, в чем может быть проблема? |