1

param関数を介して次のページに渡されるパラメーターを設定しようとしています。

私はもう試した

param(-name=>'foo',-value=>'the value');
param(-name=>'fooz',-values=>['an','array','of','values']);
param('foo3', 1);

私のスクリプトは、すべて(param)をチェックする別のスクリプトにリダイレクトしますが、運がありません。CGIのマンページは、これが「正しく機能する」ことを意味します。私は何が間違っているのですか?

ありがとう!

4

2 に答える 2

4

これを行うにはいくつかの方法があります。

  1. URI::QueryParamメソッドを使用してリダイレクトURIを作成します。

    use URI qw();
    use URI::QueryParam qw();
    
    my $q = CGI->new;
    my $u = URI->new($q->url);
    $u->query_param(foo => 'the value');
    $u->query_param_append(fooz => qw(an array of values));
    $u->query_param(foo3 => 1);
    $u->as_string   # expression returns serialised string
    
  2. パラメータの状態をファイルに保存してから、リダイレクトされたページからそのファイルの状態をロードします。

    my $query = CGI->new;
    $query->save(\*FILEHANDLE);
    my $q = CGI->new(\*INFILEHANDLE);
    
  3. JavaScriptを介してリダイレクトを実行しますが、これではパラメーターを変更できません。

    my $q = CGI->new;
    print $q->header();
    print "window.location=\"$url\";\n\n"
    

私の意見では、上記の最初のオプションが最も簡単です。

于 2012-04-12T17:28:16.567 に答える
1

self_urlメソッドを使用する必要があります。

$cgi->param(-name=>'foo',-value=>'the value');
$cgi->param(-name=>'fooz',-values=>['an','array','of','values']);
$cgi->param('foo3', 1);
printf '<a href="%s">next page</a>', $cgi->self_url;

これはf.exになります。<a href="http://localhost:5000/foo.pl?foo=the%20value;fooz=an;fooz=array;fooz=of;fooz=values;foo3=1">next page</a>

于 2012-04-12T20:55:03.167 に答える