##
package App::Test;
use strict;
use base 'CGI::Application';
use CGI::Application::Plugin::JSON ':all';
use DBI;
use JSON;
my $db = 'DBServer';
my $user = 'user';
my $pass = 'passw';
my $mysql_dbh = DBI->connect( "DBI:ODBC:$db", $user, $pass )
|| print "Connect fail: $!";
# Define run modes
sub setup {
my $self = shift;
$self->start_mode('show_page');
$self->error_mode('error');
# The query parameter rm will contain the run mode name in run_modes
$self->mode_param('rm');
$self->run_modes(
'show_page' => 'show_page',
'add_stuff' => 'add_stuff',
);
}
# Process any fatal errors
sub error {
my $self = shift;
my $error = shift;
return "There has been an error: $error";
}
sub show_page {
my $self = shift;
#my $sql = "select TOP 5 * from my_table where account <>''";
#my $show = $self->_get_data($sql);
my $template = $self->load_tmpl('test.tmpl');
#$template->param('data', $show);
return $template->output();
}
sub add_stuff {
my $self = shift;
#my $account = shift;
my $q = $self->query;
my $account = $q->param('term');
my $sql = qq{select name, account FROM master_broker where account like ?};
my $data_handle = $mssql_dbh->prepare($sql);
$data_handle->execute($account.'%')|| die $data_handle->errstr;;
my @query_output;
while ( my $row = $data_handle->fetchrow_hashref ){
push @query_output, $row;
}
# JSON OUTPUT
$self->header_add(-type=>"application/json");
#print JSON::to_json(\@query_output);
#return $self->json_body(\@query_output);
my $json = to_json( \@query_output, {utf8 => 1} );
$json =~ s/"(\d+?)"/$1/g; # to_json puts quotes around numbers, we take them off
#$self->header_add(-type=>"application/json");
#return $json;
my $template = $self->load_tmpl('test.tmpl');
$template->param('data', $json);
return $template->output();
}
1;
####
jQuery UI Autocomplete - Perl Example
Test