I'm trying to learn how to use mod_perl2 along with Ajax. Everything was
humming along until it seemed like perhaps Apache had a couple instances of my
handler in memory, and what I had declared as module variables were existent in
two different states. It seemed like Apache was handing off to a different
handler each time my Ajax callbacks were invoked on browser/user input, and the
handler chosen was somewhat at random. Perhaps I could try to exemplify what I
was seeing.
package Handlers::Main;
...
# now I think these aren't necessarily per connection.
my $ajax_div1a_contents = "<font size=2>default text for div1/a</font>";
my $ajax_div1a_state = 0; # default state
my $ajax_div1b_contents = "<font size=2>default text for div1/b</font>";
my $ajax_div1b_state = 0; # default state
...
sub handler {
my $r = shift;
my $ajax = Apache2::Ajax->new($r);
$r->print($ajax->build_html());
return Apache2::Const::OK
}
...
sub Show_Form_sub {
# here I could try to get the request or connection for using notes
my $self = shift;
my $r = $self->r;
my $con = $r->connection;
my $convar = $con->notes->get('convarA');
# but I don't think it will help during the ajax callbacks
...
$html .= '<input type=text name=x id=x onkeyup="fAjax( [ \'x\' ],
[ \'div1\' ] );">';
}
...
sub fAjax {
my $x = shift; # this is the field value, not self
# don't know how to get the request rec in here
# nor the connection
# and trying to use module variables like
# those declared above seems buggy
# but I would like to know more about the module
# state inside here (for only this connection)
# than just the value of x.
}
One workaround I imagined was maintaining all the needed state for each
module-session in a database table keyed by sessionid, but I have the hunch
there must be a usual way to do this, and that that's not the way it is.
tia
Collin Monahan