#!/usr/bin/perl use strict; use warnings; use Plack::Request; use Plack::Response; use Plack::Builder; my %router = ( '/' => \&beverage, '/ajax' => \&fruit_juice ); my $app = sub { my $env = shift; my $request = Plack::Request->new($env); my $route = $router{$request->path_info}; if ($route) { return $route->($env); } else { return [ '404', [ 'Content-Type' => 'text/html' ], [ '404 Not Found' ], ]; } }; sub beverage { return [ 200, ['Content-Type' => 'text/html'], ['

Beverage

Choices

'] ]; }; sub fruit_juice { my $env = shift; my $request = Plack::Request->new($env); my $beverage = $request->param('beverage'); my $response = Plack::Response->new(200); # new Plack::Response if ($beverage eq 'Non-alcoholic') { $response->headers({ 'Content-Type' => 'text/html' }); $response->content(" "); return $response->finalize; } }; builder { # serve static files enable 'Static', path => sub { s!^/static/!! }, root => '/Library/WebServer/Documents'; $app; }; #### function get_choices() { var xmlhttp; if (window.XMLHttpRequest) {xmlhttp = new XMLHttpRequest();} else {xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');} var x = document.getElementById(‘beverages’).value; var z = ‘beverage=' + x; xmlhttp.open('POST’,'/ajax',true); xmlhttp.send(z); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200){document.getElementById(‘choices’).innerHTML=xmlhttp.responseText;}} }