The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
perl: CGI::Ajax; use HTML::Template;, !*! bibi, 22-Сен-08, 13:59  [смотреть все]
посмотрел пример http://www.perl.com/pub/a/2006/03/02/ajax_and_perl.html ...

там используется CGI, html прямо в нем хранится

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

проблема: в том что странциа полностью обновляется при использовании шаблона HTML::Template, по этому нету эффективности от использовани perl + CGI::Ajax + use HTML::Template !!

сделал все так как по ссылке,  только добавил шаблон... без шаблона, все нормально, обновляет часть страницы, то есть всё работает

кто использовал, покажите пример?!

или какой шаблон использовать?

  • perl: CGI::Ajax; use HTML::Template;, !*! bibi, 14:08 , 22-Сен-08 (1)
    вот код забыл написать

    #!/usr/bin/perl
    # @(#) $Id: ajax.cgi 613 2006-01-24 19:31:08Z dom $
    # User registration script.
    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 {
          $template = HTML::Template->new(filename => $dir.'test2.html' ,die_on_bad_params => '0');
                   my $url = $cgi ->url(-relative => 1);        
                   $template->param(URL => $url);
                  
                   $template->param(PJX => $ajax);
                  
        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;
        return $template->output;
       }


    $cgi->header( -charset => "utf8");

    my $ajax = CGI::Ajax->new( check_username => \&check_username );
    $ajax->JSDEBUG(1);
    print $ajax->build_html( $cgi, \&main );

    <html><head>
    <script type="text/javascript" src="binding.js"></script>
    <TMPL_VAR NAME="PJX">
    <title>Signup!</title>
    </head><body>
    <h1>Signup!</h1>

    <TMPL_VAR NAME="NOTS">

    <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>

    binding.js - такой как по ссылке, то есть проблема не в нем, скорее всего

    кто знает подскжаите хочется добить это дело!

  • perl: CGI::Ajax; use HTML::Template;, !*! angra, 21:57 , 22-Сен-08 (2)
    с CGI::Ajax не работал, так как простейший аякс занимает меньше странички на js и вообще никакого кода на стороне сервера. Посмотрите в каком виде хочет данные ваш аякс модуль на js и создайте шаблон, который это генерит.  

  • perl: CGI::Ajax; use HTML::Template;, !*! bibi, 17:47 , 23-Сен-08 (3)
    извените, проблема была не в этом...

    там надо было изменить JS, то есть нужно было из формы передать в скрипт, и чтобы из перл скрипт был ответ через Яву без перезагрузки страницы... !!!

    я искал, нашел вот это, и так сделал:

    <html><head>
    <TMPL_VAR NAME="PJX">
    <script type="text/javascript" src="binding.js"></script>
    <title>Signup!</title>
    </head><body>
    <h1>Signupw!</h1>


    <TMPL_VAR NAME="NOTS">

    <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><input type="button" onClick="javascript:check_username()" value="send" /></p>

    </form>


    </body></html>


    ==========================================================

    // @(#) $Id: binding.js 560 2005-12-14 21:57:35Z dom $

    // Run code when the page loads.  From
    // http://simon.incutio.com/archive/2004/05/26/addLoadEvent
    function addLoadEvent(func) {
      var oldonload = window.onload;
      if (typeof window.onload != 'function') {
        window.onload = func;
      } else {
        window.onload = function() {
          oldonload();
          func();
        }
      }
    }

    // Set up functions to run when events occur.
    function installHandlers() {
      if (!document.getElementById) return;
      var user = document.getElementById('user');
      if (user) {
          // When the user leaves this element, call the server.
          user.onchange = function() {
              check_username(['user'], ['baduser']);
              return true;          // Continue with default action.
          }
      }
    }

    addLoadEvent( installHandlers );


    ПРОБЛЕМА: он почему-то выполняется только раз, больше не хочет, почему?

    ВОПРОС: как составить JS который по ссылке которую я привел, и кнопку?

    и еще хочется спросить, по поводу Аяка, если ставить его везде будет ли быстродействие или может он не нужен? чтоыб его ставить на все страницы?

    • perl: CGI::Ajax; use HTML::Template;, !*! angra, 21:30 , 23-Сен-08 (4)
      >и еще хочется спросить, по поводу Аяка, если ставить его везде будет
      >ли быстродействие или может он не нужен? чтоыб его ставить на
      >все страницы?

      Если вы задаете такие вопросы, значит работаете как мартышка, узнали что аякс это модно и побежали его всталвять во все щели, при этом нихрена не поняли по сути и пытаетесь с этим работать. Разберитесь с технологией, а уже потом думайте нужна ли она вам. Кстати вопросы типа как сделать и почему не работает отпадут сами собой.


      • perl: CGI::Ajax; use HTML::Template;, !*! bibi, 11:04 , 25-Сен-08 (5)
        спасибо, я много времени тогда потратил, что сил не хватило что-то делать, когда искал, но JS код не говорит где ошибка, он или работает или не работает!

        надо будет пересмотреть этот JS код, и напишу ответ...

        • perl: CGI::Ajax; use HTML::Template;, !*! angra, 12:12 , 25-Сен-08 (6)
          На понимание принципов аякса с нуля нужно полчаса, на что вы потратили время непонятно. Простейшая(но кросс-браузерная) клиентская часть аякса у меня занимает меньше странички кода, на стороне сервера вообще ничего нет, переход от полного обновления страницы к аякс ответам был сделан за счет изменения шаблонов(кстати тоже HTML::Template). Для отладки js есть firefox с плагином firebug.
          • perl: CGI::Ajax; use HTML::Template;, !*! bibi, 10:06 , 13-Окт-08 (7)
            >На понимание принципов аякса с нуля нужно полчаса, на что вы потратили
            >время непонятно. Простейшая(но кросс-браузерная) клиентская часть аякса у меня занимает меньше
            >странички кода, на стороне сервера вообще ничего нет, переход от полного
            >обновления страницы к аякс ответам был сделан за счет изменения шаблонов(кстати
            >тоже HTML::Template). Для отладки js есть firefox с плагином firebug.

            спасибо, ну так а  какие 30 мин? где мне взять скрипты JS??

            вот например хочу спросить, где взять скрипты JS чтобы поставить их в html сделать кнопки и все остальное, чтобы динамически вносить и выностить информацию, подсчет и все лстальое?

            в гугле про CGI::Ajax ничего нету, везде про php, или тут одинаково?

            нашел большие библотеки JS
            можно реальный пример, как эти библиотеки использовать с CGI::Ajax?




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру