2

我有一个简单的 perl cgi,我在我的 extjs 项目中使用,这样写:

use JSON;

print "Content-type: application/json\n\n";

my $node_hash = {
data => [{
     "Week",1145,
         "Sev_Logged", "3_major"
},{
    "Week", 1146,
        "Sev_Logged", "4_minor"
}]};
print to_json($node_hash);

它返回以我用来生成图表的 json 格式编写的数据。我还有一个表单,其中包含一个带有值的组合框:“3_major”和“4_minor”对应于“Sev_Logged”字段。现在我想要的是,每当用户选择“4_minor”时,我的 perl cgi 只会返回第 1146 周,因此我的图表将只包含第 1146 周的数据。

这可能吗?如何?谢谢

4

2 回答 2

4

我不知道您的数据来自哪里,但您可以执行以下操作:

use strict;
use warnings;
use CGI;
use JSON;

my $q = CGI->new;
print $q->header("application/json");

my $Sev_Logged = $q->param('Sev_Logged');

my $data = [
  {
    "Week" => 1145,
    "Sev_Logged" =>"3_major",
  },
  {
    "Week" => 1146,
    "Sev_Logged" => "4_minor",
  },
];

my $node_hash = {
  data => [
    grep { $_->{'Sev_Logged'} eq $Sev_Logged } @$data,
  ]
};
print to_json($node_hash);

你可以这样称呼它:GET script.pl?Sev_Logged=3_major


无论如何,我认为如果您已经传输了所有数据,则应该仅使用 JavaScript 在客户端对其进行过滤。我认为不需要 AJAX 调用。

于 2012-11-08T15:10:53.180 回答
1

我愿意use CGI为此提供帮助。简而言之,您需要通过表单和 GET 或 POST 请求将组合框字段传递给此 CGI 脚本。然后,此 CGI 脚本需要通过参数读取组合框的值。如果使用 CGI 模块,可以通过param方法获取参数。

于 2012-11-08T15:11:15.253 回答