1

jqueryを使用して、標準オブジェクトをperl cgiスクリプトに投稿しようとしています

js 変数データ:

{
 alias: ["a1","a2","a3"],
 ip: "127.0.0.1",
 name: "name",
 port: "80",
}

js jquery 投稿:

`$.post('/vhosts.cgi',{action: 'save',data: data);`

パール:

my $q = CGI->new;
print Dumper($q->param('data'));

ダンパーが空になります。$q のダンプは、パラメーター名がdata[ip],data[name]etc であることを示しています。

ダンパー($q):

$VAR1 = bless( {
             '.parameters' => [
                                'action',
                                'data[name]',
                                'data[ip]',
                                'data[port]',
                                'data[alias][]'
                              ],
             'data[alias][]' => [
                                  'a1',
                                  'a2',
                                  'a3'
                                ],
             '.charset' => 'ISO-8859-1',
             'data[ip]' => [
                             '127.0.0.1'
                           ],
             'data[port]' => [
                               '80'
                             ],
             'action' => [
                           'savevhost'
                         ],
             'data[name]' => [
                               'name'
                             ],
             '.fieldnames' => {},
             'escape' => 1
           }, 'CGI' );

dataperl でオブジェクトまたはハッシュとして取得するにはどうすればよいですか?

4

1 に答える 1

2

のような構造のための独自のパーサー ユーティリティを作成したくない場合data[...]や、Unicode の問題などを混乱させたくない場合は、JSON エンコーディング/デコーディングを使用することをお勧めします。

クライアント側:

$.post('/vhosts.cgi',{action: 'save',data: JSON.stringify(data, null, 2));

サーバ側:

use CGI;
use JSON;
use Data::Dumper;

my $q = CGI->new;
my $data = decode_json($q->param('data'));

print Dumper $data;

そんなに難しい方法ではないと思います。

于 2012-10-20T20:21:14.330 に答える