我有一个简单的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周的数据。
这可能吗?怎么样? 谢谢
答案 0 :(得分:3)
我不知道您的数据来自哪里,但您可以这样做:
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调用。
答案 1 :(得分:1)
我会use CGI
来帮助解决这个问题。简而言之,您需要通过表单和GET或POST请求将组合框字段传递给此CGI脚本。然后,该CGI脚本需要通过参数读取组合框的值。如果使用CGI模块,则可以通过param
方法获取参数。