CGI::Ajax && HTML::Template

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

CGI::Ajax && HTML::Template

Непрочитанное сообщение ProFTP » 2008-09-21 16:45:22

решил поставить Ajax на одну страницу где выводится много данных

но с шаблоном работать не хочет, с 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
в основном движке, получилось - работалдо, но страницу он полностю обновляет, то есть эффективности нету... должно тлько часть ( с CGI обновляло часть)
короче, как с шаблоном должно быть? ошибка в логике где большая?

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
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: CGI::Ajax && HTML::Template

Непрочитанное сообщение ProFTP » 2008-09-22 19:06:27

*лять проблема то вообще не в этом...

короче, как передать из формы в скрипт данные, выполнить в скрипте функцию, и вывести в html над формой 1 или 0, не обновляя страницу и не выводя все данные из СУБД? какой тут нужен JS ? как переделать этот существующий по ссылке который я привел, и как кнопку сделать? :st: :st: :st: :st: :st: :bn: :st: :st: :st: :st: :st: :fool: :-o
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: CGI::Ajax && HTML::Template

Непрочитанное сообщение zg » 2008-09-23 7:04:14

http://anton-pribora.ru/files/news.zip когда-то давно настрадал, вобщем там по аяксу была админка сделана, смотри, пхп там ещё не сильно сложный должен быть... :cf:

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: CGI::Ajax && HTML::Template

Непрочитанное сообщение ProFTP » 2008-09-23 8:25:22

вот это, если я правильно понял то вместо onChange нужно поствить что-то другие... ONCLICK, как кого составить?

Код: Выделить всё

<A ONCLICK="topic_add(
            document.getElementById('new_topic').value);
            return false;"
   HREF="foo">Add new topic</A>

Код: Выделить всё

<form onsubmit='openSite();return false;'><input name='m' id='m' type='text'/></form>
не могу найти как эту кнопку поставить.... :st:

UPD: короче, кажется понял, но не работает, точнее работает только оно блин один раз выполняется, а больше не хочет, надо посидеть подумать... :fool:
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

MAK
ст. сержант
Сообщения: 344
Зарегистрирован: 2008-09-17 2:23:21

Re: CGI::Ajax && HTML::Template

Непрочитанное сообщение MAK » 2008-09-23 14:41:22

ProFTP писал(а):вот это, если я правильно понял то вместо onChange нужно поствить что-то другие... ONCLICK
используй что-нить универсальное, например prototypejs.org - кросс-браузерная, отлаженная либа - понятней некуда.
не изобретай велосипед. )

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: CGI::Ajax && HTML::Template

Непрочитанное сообщение ProFTP » 2008-09-23 14:52:34

можешь нормально объяснить что за либа? как ее использовать и с чем?

во втором посте я написал, чтобы не повторятся... (оно один раз выполняется по тому JS скрипту http://www.perl.com/2006/03/02/examples/binding.js , надо что-то пересмотреть...)
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

MAK
ст. сержант
Сообщения: 344
Зарегистрирован: 2008-09-17 2:23:21

Re: CGI::Ajax && HTML::Template

Непрочитанное сообщение MAK » 2008-09-23 18:39:38

Ну там же все написано.
Это js-либа для работы с DOM. Дружит с ajax, json и пр...
Скачиваешь последюю версию, подключаешь в документ

Код: Выделить всё

<script src="prototype.js" type="text/javascript"></script>
и используешь. Тебе надо вроде форму запостить аяксом скрипту, вот кури http://prototypejs.org/api/form/request

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: CGI::Ajax && HTML::Template

Непрочитанное сообщение ProFTP » 2008-10-13 7:15:13

Код: Выделить всё

$('person-example').request({
  method: 'get',
  parameters: { interests:'JavaScript', 'hobbies[]':['programming', 'music'] },
  onComplete: function(){ alert('Form data saved!') }
})
1. Cпасибо, посмотрю, но где по вашей сслыке в этом коде функция которая дорлжная запуститься в моем cgi скрипте?
я спросил как переделать 10 строковой скрипт, а вы мне показали либу в 10 000 строк... (не считал но большая)

я так и не сделал, то есть оно выполняется один раз, зато в гугле нашел другие некоторые приколы...
CGI::AJAX уже ставит в какой-то свой код в html, чтобы взаимодействовать сразу с cgi либо с mod_perl

2. а вот элементы AJAX, то есть хотелось бы анамиция при выполнении или выборку (чтобы сразу передвать в скрипт в базу и чтобы страница не обновлялась), где это можно найти? тут нужно что-то не много другое для CGI::AJAX ? не знаю что нужно искать... ну чтобы на страницу накидать больше всякого js
подскжаие что искать и как поставить! надоело парится
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: CGI::Ajax && HTML::Template

Непрочитанное сообщение ProFTP » 2008-10-13 10:11:14

вот нашел http://search.cpan.org/~esskar/HTML-Pro ... ototype.pm

но в этой либе есть еще что-то прикольное, кнопки и как анимацию сделать при выполнении?

(загрузка файлов на сервер в процессе на яксе я видел) но тут просто подсчет какой-то выполнить или еще что-то
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

MAK
ст. сержант
Сообщения: 344
Зарегистрирован: 2008-09-17 2:23:21

Re: CGI::Ajax && HTML::Template

Непрочитанное сообщение MAK » 2008-10-13 18:45:28

ProFTP писал(а): подскжаие что искать и как поставить! надоело парится
Ищите азы веб-программирования. Вы даже вопросы не можете задать грамотно.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: CGI::Ajax && HTML::Template

Непрочитанное сообщение ProFTP » 2008-10-21 17:50:33

Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение