+# my $headers = Mojo::Headers->new;
+# $headers = $headers->access_control_allow_origin('*');
+# $headers = $headers->add('Access-Control-Allow-Origin' => '*');
+ $c->stash( posted_data => $posted_data);
+ $c->render(template => 'index');
+ $c->res->headers->header('Access-Control-Allow-Origin' => '*');
+ my $food = $c->param('food');
+ my $lang = $c->param('lang');
+ push @{$posted_data} , { food => $food, lang => $lang };
+ my $json = $c->req->json;
+ my $food = $json->{food};
+ my $lang = $json->{lang};
+ push @{$posted_data} , { food => $food, lang => $lang };
+%= t table => (border => 1) => begin
+ % for my $data (@{$posted_data}){
+ %= t td => <%= $data->{food}
+ %= t td => <%= $data->{lang}
+%= t form => (name => 'form', action => '/', method => 'POST') => begin
+ food: <%= t input => (name => 'food') => '' %>
+ lang: <%= t input => (name => 'lang') => '' %>
+ %= t button => (type => 'submit') => 'POSTで送信'
+%= t button => (onclick => 'postSubmit()') => 'JSONで送信'
+ const lang = document.form.lang.value;
+ const food = document.form.food.value;
+ const json = JSON.stringify(obj);
+ %# XMLHttpRequestでPOSTする
+ let xhr = new XMLHttpRequest();
+ xhr.open("POST", "/json");
+ xhr.onreadystatechange = function() {
+ if( xhr.status == 200) {
+@@ layouts/default.html.ep
+ <head><title><%= title %></title></head>