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);`

perl:

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

导致 Dumper 为空;$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' );

我如何data在 perl 中获得对象或哈希?

4

1 回答 1

2

如果您不想为data[...]-like 结构编写自己的解析器实用程序并遇到 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 回答