JSON文字列をperlで受け取る
ajaxで渡す場合は
javascript側でこんな風に書いてあげればいいんですが・・・
$.ajax({
url: '/route',
type: 'POST',
contentType: 'application/json',
data: to_json(path),
dataType: 'json'
})
普通にajaxでなくてPOSTで渡す方法でうまくサーバサイドでうけとらない。
クライアント側のコードは
submitの後に、javascriptの関数を呼んで hiddenのdata値の値にjson文字列を入れるようにしています。 IEのキャプチャ(F12キーを押して、ネットワークタブを選ぶ) に出力されている内容は以下のようでした。
data=%7B%22distance%22+%3A+0.112%2C%22path%22+%3A+%22LINESTRING%2835.691016648420515+139.75249886512756%2C35.691030000000005+139.75252%2C35.690200000000004+139.75317%29%22%7D&course_name=mmmmm&course_type=1&=
半角スペース部分が+に置換されているようです。
サーバー側(Mojolicious)のコードは
my $data = $self->req->param("data");
$data =~ tr/+/ /;
$data = uri_unescape( $data);
my $hash = decode_json $data;
こちらに を参照。
どうも、uri_unescapeでは、+は+のままになってしまう模様。 だから、trで+を半角スペースに置換してあげました、いうお話でした。