Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: perl & Asynchronous Javascript

by gryphon (Abbot)
on Aug 11, 2005 at 02:22 UTC ( #482837=note: print w/ replies, xml ) Need Help??


in reply to perl & Asynchronous Javascript

Greetings InfiniteLoop,

As I mention here and here, I'm a big fan of JSON (JavaScript Object Notation) and the JSON.pm module from CPAN. When used with CGI::Application, you just return the JSON-created string out of the subroutine that's setup by setup instead of your normal template content. It's crazy-simple.

Here's some sample code...

Here's a skeleton CGI::Application-inspired module. There are two run modes, one which is a fairly typical HTML::Template situation, and the other is the AJAX variety.

package YourCGIAppModule; use strict; use warnings; use JSON; use base 'CGI::Application'; sub cgiapp_init { my $self = shift; $self->param( 'json' => JSON->new ); } sub setup { my $self = shift; $self->start_mode('main'); $self->run_modes( 'main' => 'screen_main_page', 'random' => 'ajax_get_random', ); } sub screen_main_menu { my $self = shift; my $tmpl_obj = $self->load_tmpl( 'default.tmpl', 'loop_context_vars' => 1, ); $tmpl_obj->param( 'title' => 'Main Menu' ); return $tmpl_obj->output; } sub ajax_verify_browser { my $self = shift; return $self->param('json')->objToJson({ 'random' => rand }); }

I know this is really basic/simple, but it just doesn't have to be any more complicated than this. To get the data from JavaScript, you make the XMLHttpRequest object call and eval the returned text:

var randomNumber = eval('(' + ajaxJSONtext + ')');

gryphon
Whitepages.com Development Manager (DSMS)
code('Perl') || die;


Comment on Re: perl & Asynchronous Javascript
Select or Download Code
Re^2: perl & Asynchronous Javascript
by InfiniteLoop (Hermit) on Aug 11, 2005 at 14:39 UTC
    Thanks a bunch gryphon, this is most excellent help.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://482837]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (12)
As of 2015-07-07 13:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (88 votes), past polls