Я изо всех сил пытаюсь определить точку, где это терпит неудачу.Я могу заставить этот плагин работать, используя php / jquery на моем локальном ПК, но пытаясь продублировать его с Perl на моей рабочей коробке (где php не подходит по причинам, по которым я не буду вдаваться).
index.cgi - это код на Perl, который генерирует html-страницу, содержащую текстовое поле.
#!/usr/bin/perl -w
use DBI;
use CGI;
use warnings;
use strict;
$cgi = new CGI;
$cgi->autoEscape(undef);
print $cgi->header;
print $cgi->start_html(-title=>'test',
-dtd=>'//W3C//DTD HTML 4.01 Transitional//EN',
-style=>'/themes/ui-lightness/jquery.ui.all.css',
-script=>[
{-type=>'javascript', -src=>'/js/jquery-1.5.2.min.js'},
{-type=>'javascript', -src=>'/js/test.js'},
{-type=>'javascript', -src=>'/ui/jquery-ui-1.8.11.custom.js'},
{-type=>'javascript', -src=>'/ui/jquery.ui.core.js'},
{-type=>'javascript', -src=>'/ui/jquery.ui.widget.js'},
{-type=>'javascript', -src=>'/ui/jquery.ui.position.js'},
{-type=>'javascript', -src=>'/ui/jquery.ui.autocomplete.js'}
]
);
print $cgi->start_div({-class=>'ui-widget'});
print $cgi->textfield(-id=>'customer',-size=>25),$cgi->br;
print $cgi->end_div(),$cgi->br;
print $cgi->div({-class=>'ui-widget-content',-id=>'log'});
print $cgi->end_html;
test.pl - это код, который выполняется в фоновом режиме для передачи JSON для автозаполнения:
#!/usr/bin/perl
use warnings;
use strict;
use CGI;
use DBI;
use JSON;
my $cgi = CGI->new;
print $cgi->header(-type => "application/json", -charset => "utf-8");
my $dbh = DBI->connect('dbi:mysql:hostname=test;database=test',"test","test");
my $term = $cgi->param('term');
my $sth = $dbh->prepare(qq{SELECT customer.name, customer.id FROM test WHERE customer.name ?;}) or die $dbh->errstr;
$sth->execute($term.'%') or die $sth->errstr;
my $json = {};
while(my @customer = $sth->fetchrow_array()) {
$json->{$customer[0]} = $customer[1];
}
print JSON::to_json($json);
test.js - это фактический JQuery, который используется:
$(function() {
function log( message ) {
$( "<div/>" ).text( message ).prependTo( "#log" );
$( "#log" ).attr( "scrollTop", 0 );
}
$( "#customer" ).autocomplete({
source: "test.pl?term=",
minLength: 2,
select: function( event, ui ) {
log( ui.item ?
"Value: " + ui.item.value + " Key " + ui.item.id :
"Nothing selected, input was " + this.value );
}
});
});
Я был в Google, но не нашел ничего хорошего, где у кого-то есть примерPerl с JQuery.Файлы test.js и index.cgi почти полностью дублируют код из файлов примеров jquery-ui для автозаполнения jquery, за исключением того, что index.cgi написан на Perl с использованием CGI.pm.
Любая помощь будет приветствоватьсяЯ несколько ограничен в языках здесь из-за природы сервера и приложений, которые на нем.