#! /usr/bin/perl -w # this is an example script of how you would use coderefs to define # your CGI::Ajax functions, and the methods return multiple results to # the page # # NB The CGI::Ajax object must come AFTER the coderefs are declared. use strict; use CGI::Ajax; use CGI; my $q = new CGI; my $exported_fx = sub { my $value_a = shift; my $value_b = shift; $value_a = "" if not defined $value_a; # make sure there's def $value_b = "" if not defined $value_b; # make sure there's def if ( $value_a =~ /\D+/ or $value_a eq "" ) { return( $value_a, $value_b, 'NaN' ); } elsif ( $value_b =~ /\D+/ or $value_b eq "" ) { return( $value_a, $value_b, 'NaN' ); } else { # got two numbers, so lets multiply them together return( $value_a, $value_b, $value_a * $value_b ); } }; my $Show_Form = sub { my $html = ""; $html .= <<EOT; <HTML> <HEAD><title>CGI::Ajax Multiple Return Value Example</title> </HEAD> <BODY> <form> Enter something: <input type="text" name="val1" id="val1" size="6" onkeyup="myfunc( ['val1','val2'], ['inputa','inputb','resultdiv'] ); return true;"><br> Enter something else: <input type="text" name="val2" id="val2" size="6" onkeyup="myfunc( ['val1','val2'], ['inputa','inputb','resultdiv'] ); return true;"><br> <hr> <table> <tr> <td>Input A</td> <td>Input B</td> <td>Result</td> </tr> <tr> <td> <div id="inputa" style="text-align: center; border: 1px solid black; width: 80px; height: 20px; overflow: auto"></div> </td> <td> <div id="inputb" style="text-align: center; border: 1px solid black; width: 80px; height: 20px; overflow: auto"></div> </td> <td> <div id="resultdiv" style="text-align: center; border: 1px solid black; width: 80px; height: 20px; overflow: auto"></div> </td> </tr> </table> </form> </BODY> </HTML> EOT return $html; }; my $pjx = CGI::Ajax->new( 'myfunc' => $exported_fx); $pjx->JSDEBUG(1); print $pjx->build_html($q,$Show_Form); # this outputs the html for the page