von Renée Bäcker, 04.09.2007

Perl-Webanwendungen mit Ajax: Ajax bringt Glanz auf Perlen

Aus dem
t3n Magazin Nr. 9

Das Modul ist sehr gut für relativ einfache Ajax-Anwendungen geeignet. Sobald es in andere Frameworks integriert werden soll, ist der „Spieltrieb“ des Entwicklers gefordert. Oft sind Lösungen im Internet zu finden, da andere sich schon mit den selben Problemen auseinandersetzen mussten.

HTML::Prototype

Prototype [2] ist ein sehr bekanntes Framework für Ajax. Auch hierfür gibt es auf CPAN ein entsprechendes Modul, das den Programmierer bei seiner Arbeit unterstützt. Mit HTML::Prototype kann das Schreiben von JavaScript komplett vermieden werden, was für JavaScript-Einsteiger sicherlich von Vorteil ist. Mit den folgenden Codezeilen wird die Prototype-Bibliothek ausgegeben:

PERL

print $prototype->define_javascript_functions;

Listing 4

Die meisten Methoden von HTML::Prototype liefern den JavaScript-Bereich für die Ajax-Funktionalität, während die HTML-Elemente im Template definiert werden müssen. Es gibt allerdings einige Ausnahmen: Funktionen, die einen JavaScript-Event-Handler verwenden (zum Beispiel link_to_remote), liefern das komplette HTML-Element mit dem zugehörigen JavaScript.

HTML::Prototype Beispiel

#!/usr/bin/perl -w
use CGI;
use HTML::Prototype;
my $cgi = CGI->new();
print $cgi->header();
my %params = $cgi->Vars;
if( $params{action} ){
	print $params{test};
}
else{
	my $field = $pt->observe_field('testid',{
		update => 'view',
		url    => 'html_prototype_test.cgi',
		with   => "'action=echo;test='+value",
		frequency => 1,
	});
	my $proto = $pt->define_javascript_functions;
	print qq~<html><head>$proto</head>
		<body><input type="text" id="testid">
		<div id="view"></div>
		$field</body></html>~;
}

Listing 5

Zunächst werden ein neues CGI-Objekt erzeugt, der Header ausgelesen und die Parameter geparst. Gibt es einen 'action'-Parameter, wird der Wert des Parameters 'test' zurückgeliefert.

Seite:  1 2 3 4

Empfohlene Artikel