2

私はextjsプロジェクトで使用する単純なperlcgiを持っており、次のように書かれています:

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形式で記述されたデータを返します。「Sev_Logged」フィールドに対応する「3_major」と「4_minor」の値を持つコンボボックスを含むフォームもあります。ユーザーが「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 に答える