我需要能够解码ajax调用的数据部分的多个参数到perl cgi脚本。我知道其他一切正在处理我的代码,但无论出于何种原因,我似乎都无法使JSON模块的解码方法正常工作,从而将数据从JSON格式恢复为参数。我的jQuery ajax调用中的数据是这样设置的,这是正确的。jQuery AJAX到Perl JSON模块解码数据
data: {
maxRows: 5,
productName: request.term
}
但是,我试图解析成perl的方式有些问题。
my $json = JSON->new->utf8->allow_nonref;
my $json_text = $cgi->param('data');
my $json_array = $json->decode($json_text);
我知道正确的最终结果应该是散列数组。如果我可以得到这么多,我知道我会没事的。但是,我的解码行不起作用,并且实际上会导致整个脚本在执行时失败。
我环顾四周,我只是无法弄清楚这一点。我很确定这是一个非常小的调整。
我使用$ cgi-> param('data')正确获取参数吗?它最终是否被命名为数据,还是其他东西?
确定吗? jQuery API和演示已经完成了他们以上的方式。我甚至测试了这个演示代码:http://jqueryui.com/autocomplete/#remote-jsonp我自己,它的工作。我只是没有服务器端脚本来看看它是如何被解析的。 – sage88 2013-04-09 11:10:44
是的,我以前见过这种方法,我想我只是想更深入地理解如何使用CGI.pm获取AJAX数据。相比之下,这种方法看起来像是一种黑客攻击。 http://www.ibm.com/developerworks/webservices/library/ws-simplelogin/它使用相同的概念。我知道我现在的工作方式,我只是不知道geonames.org使用的解析技术。但我想乞丐不能是选择者。 – sage88 2013-04-09 11:24:56
另一方面,我使用开发者工具开启的Google Canary。我可以看到出现的查询字符串参数为:maxRows:5 productName:bi(如果我在输入中输入bi)。所以即使是开发者工具也正确地解析它们,这特别令人厌烦。 – sage88 2013-04-09 11:26:28