но с шаблоном работать не хочет, с CGI просто всё получается, говорят что должно работать с этим шаблоном, и с другими шаблонами, тоже...
в документации нету, в гугле тоже, не понятно как там передать туда и обрано... исходники длинные...
вот то что я делал
Код: Выделить всё
#!/usr/bin/perl
# @(#) $Id: ajax.cgi 613 2006-01-24 19:31:08Z dom $
# User registration script.
use strict; use warnings; use CGI; use CGI::Ajax; use CGI::Carp qw(fatalsToBrowser); use HTML::Template;
my $dir="../1/"; my $cgi = CGI->new();
sub check_username {
my ( $user ) = @_;
return unless -f '/tmp/users.txt';
open my $fh, '<', '/tmp/users.txt'
or return "open(/tmp/users.txt): $!";
while (<$fh>) {
chomp;
return "Username '$user' taken!" if lc $_ eq lc $user;
}
return '';
}
sub save_username {
my ( $user ) = @_;
open my $fh, '>>', '/tmp/users.txt'
or die "open(>>/tmp/users.txt): $!";
print $fh "$user\n";
close $fh;
return;
}
sub main {
my $template = HTML::Template->new(filename => $dir.'test2.html' ,die_on_bad_params => '0');
my $url = $cgi ->url(-relative => 1);
my $template->param(URL => $url);
if ( my $user = $cgi->param('user') ) {
my $err = check_username( $user );
if ( $err ) {
$template->param(NOTS => 'nono');
} else {
save_username( $user );
$template->param(NOTS => 'yesyes');
}
}
my $html = $template->output;
return $html; }
my $ajax = CGI::Ajax->new( check_username => \&check_username );
$ajax->JSDEBUG(1);
print $ajax->build_html( $cgi, \&main );
exit 0;
__END__
Код: Выделить всё
with the html-generating function sent to CGI::Ajax
короче, как с шаблоном должно быть? ошибка в логике где большая?
JS:
http://www.perl.com/2006/03/02/examples/binding.js
html:
Код: Выделить всё
<html><head>
<title>Signup!</title>
<script type="text/javascript" src="binding.js"></script>
</head><body>
<h1>Signup!</h1>
<TMPL_VAR NAME="NOTS2">
<form action="<TMPL_VAR NAME="URL">" method="post">
<p>Please fill in the details to create a new Account.</p>
<p>Username: <input type="text" name="user" id="user"/>
<em id="baduser"></em></p>
<p>Password: <input type="password" name="pass" id="pass"/></p>
<p><input type="submit" name="submit" value="SIGNUP"/></p>
</form></body></html>
Код: Выделить всё
#!/usr/bin/perl
# @(#) $Id: ajax.cgi 613 2006-01-24 19:31:08Z dom $
# User registration script.
use strict;
use warnings;
use CGI;
use CGI::Ajax;
my $cgi = CGI->new();
my $ajax = CGI::Ajax->new( check_username => \&check_username );
$ajax->JSDEBUG(1);
print $ajax->build_html( $cgi, \&main );
sub check_username {
my ( $user ) = @_;
return unless -f '/tmp/users.txt';
open my $fh, '<', '/tmp/users.txt'
or return "open(/tmp/users.txt): $!";
while (<$fh>) {
chomp;
return "Username '$user' taken!" if lc $_ eq lc $user;
}
return '';
}
sub save_username {
my ( $user ) = @_;
open my $fh, '>>', '/tmp/users.txt'
or die "open(>>/tmp/users.txt): $!";
print $fh "$user\n";
close $fh;
return;
}
sub main {
my $html = <<HTML;
<html><head>
<title>Signup!</title>
<script type="text/javascript" src="binding.js"></script>
</head><body>
<h1>Signup!</h1>
HTML
if ( my $user = $cgi->param('user') ) {
my $err = check_username( $user );
if ( $err ) {
$html .= "<p class='problem'>$err</p>";
} else {
save_username( $user );
$html .= "<p>Account <em>$user</em> created!</p>\n";
}
}
my $url = $cgi->url(-relative => 1);
$html .= <<HTML;
<form action="$url" method="post">
<p>Please fill in the details to create a new Account.</p>
<p>Username: <input type="text" name="user" id="user"/>
<em id="baduser"></em></p>
<p>Password: <input type="password" name="pass" id="pass"/></p>
<p><input type="submit" name="submit" value="SIGNUP"/></p>
</form></body></html>
HTML
return $html;
}
exit 0;
__END__
http://www.psicofxp.com/forums/desarrol ... jax-2.html
http://www.mail-archive.com/html-templa ... 02216.html
хочеться добить, или надо другой шаблон?
нашел еще вот это:
http://search.cpan.org/~rhesa/HTML-Temp ... gin/Dot.pm