Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister


by VIVIsectI (Initiate)
on Dec 28, 2012 at 22:15 UTC ( #1010753=perlquestion: print w/replies, xml ) Need Help??

VIVIsectI has asked for the wisdom of the Perl Monks concerning the following question:

First time posting so I appreciate any replies and patience required to deal with me.

Clicking a button builds some additional HTML. Now, included in that additional HTML is another button. I want the new button to perform some additional task using CGI::AJAX as well. I've got no problem getting the initial CGI::AJAX setup and working, but I'm not sure where to start on getting the second button declared with a new subroutine to parse.

Some sample code.

After clicking whoohoo I want to now click whoopy and change the 'innerDiv' from poop to tinkle.

#!/usr/bin/perl use strict; use warnings; use CGI ':standard'; use CGI::Ajax; # use CGI::Carp qw(fatalsToBrowser); # Uncomment for debugging ajaxifyView(); sub ajaxifyView { my $cgi = new CGI; my $ajx = new CGI::Ajax ( 'viewsub' => \&subViewSub ); $ajx->JSDEBUG(0); print $ajx->build_html ($cgi, \&buildHTML); } sub buildHTML { my $q = new CGI; my $html; $html .= $q->start_html; $html .= $q->start_table; $html .= $q->Tr( $q->td($q->textfield(-name=>'pantyhoes', -id=>'pantyhoes', + -value=>'sometext')) ); $html .= $q->Tr( $q->td($q->button(-name=>'whoohoo', -onclick=>"viewsub(['p +antyhoes'], ['DisplayDiv'])")), $q->td($q->div({-id=>'DisplayDiv'}, 'ReplaceMe')) ); $html .= $q->end_table; $html .= $q->end_html; return $html; } sub subViewSub { my $q = new CGI; my $innerHTML; $innerHTML .= $q->hidden(-name=>'smoosh', -value=>"tinkle"); $innerHTML .= $q->button(-name=>'whoopy', -onclick=>"viewsub([ +'smoosh'], ['innerDiv'])"); $innerHTML .= $q->div({-id=>'innerDiv'},"poop"); return ($innerHTML); }

Replies are listed 'Best First'.
Re: CGI::AJAX inside CGI::AJAX
by Anonymous Monk on Dec 28, 2012 at 22:54 UTC

      Found the answer in Didn't know about the Manifest feature of CPAN, I appreciate the pointer. I'm not ready to start writting Javascript too, I've only been working with Perl for about two months now. So far I've gotten away with very minimal javascript.

      The answer was to add another sub to my $ajx object declaration as seen below:

      my $ajx = new CGI::Ajax ( 'viewsub' => \&subViewSub, 'updatesu +b' => \&UpdateSub );

      Previously this was only the viewsub, but adding updatesub allows me to reference that routine from the buttons that were created by the first one.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1010753]
Approved by ww
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (4)
As of 2022-01-25 00:02 GMT
Find Nodes?
    Voting Booth?
    In 2022, my preferred method to securely store passwords is:

    Results (65 votes). Check out past polls.