プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。

jQueryを使用します。
Handsontableを使いたいと思います。
表に入力した内容をperlのCGIにデータ送信して、処理をしたいのですが
どのようにすればいいのかがわからずにいます。

http://handsontable.com/demo/ajax.html
こちらにサンプルがあるのですが、saveのときの処理がよくわかりません。
$.ajax の data にただの文字列を設定すれば、CGIでの受け取り方がわかるのですが、
表のデータ?(handsontable.getData()の部分)の場合、CGIではどのように
受け取れば良いのでしょうか?

$.ajax({
  url: "netaut2.cgi",
  data: {"data": "abcde"},
  dataType: 'json',
  type: 'POST',
   :
}

↑こうであれば、CGI側は

$form = new CGI;
$val = $form->param('data');

このようにして$valに"abcde"とデータが取れますが、

var json_data = [
{"name" : "Taro", "age" : 19},
{"name" : "Hana", "age" : 25}
];
$.ajax({
  url: "netaut2.cgi",
  data: json_data,
  dataType: 'json',
  type: 'POST',
   :
}

のようにした場合がわかりません。

宜しくお願い致します。

A 回答 (3件)

use CGI;


use JSON qw/encode_json decode_json/;

my $query = CGI->new;
my $data = $query->param('POSTDATA'); <-今回の質問の肝はおそらくこちらです
my $json_array = $json->decode( $data ); <-JSONデータをPerlで解釈できるように変換

$json_arrayから、扱いたいデータが扱えると思います。

全て英語ですが…参考URLです。
https://metacpan.org/pod/CGI#HANDLING-NON-URLENC … CGI.pmのparam('POSTDATA')について

http://stackoverflow.com/questions/908113/how-ca …
http://stackoverflow.com/questions/15899616/jque …

JSONモジュールについて
http://d.hatena.ne.jp/perlcodesample/20100427/12 …
    • good
    • 0
この回答へのお礼

アドバイス頂き、ありがとうございます。
どうしても$dataに値が入ってこないのです…
使い方を間違えているのかもしれません。
<STDIN>だと、一列で全データが入ってきます。(URIエンコードされた状態)
もう少し試してみます。
ありがとうございました。

お礼日時:2013/11/20 16:45

大分時間が経ってますが、jQueryはその形式をサポートしていないようです。



http://api.jquery.com/jQuery.ajax/
dataのフォーマットはPlainObject or Stringとなっています。

配列はPlainObjectではありませんが、
nameプロパティとvalueプロパティが含まれるオブジェクトの配列であれば、name=valueというデータとして送信できるようです。これは非公式の書き方かもしれません。

[
{"name": "name1", "value": "value1"},
{"name": "name2", "value": "value2"}
]

name1=value1&name2=value2

ご参考まで。
    • good
    • 0
この回答へのお礼

遅くなり、申し訳ありません。

アドバイス、ありがとうございます。
簡単に取得できる方法はないのですね。
name=valueの羅列で入ってきたデータを解析して使用するようにしました。

ありがとうございました。

お礼日時:2013/12/05 09:51

拙作では$.ajaxではcontentTypeを指定しているのですが、この指定はありますか?



$.ajax {
 type: "POST",
 contentType: "application/json",
 ・・・

以下のURLを見る限り、必要そうなので・・・
http://tarotaro.jugem.cc/?eid=1542
    • good
    • 0
この回答へのお礼

遅くなり、申し訳ありません。

contentTypeの指定は無かったので追加してみたのですが、
変化がありませんでした。

アドバイスありがとうございます。

お礼日時:2013/12/05 09:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!