我正在尝试设置一个参数以通过 param 函数传递到下一页。
我试过了
param(-name=>'foo',-value=>'the value');
param(-name=>'fooz',-values=>['an','array','of','values']);
param('foo3', 1);
我的脚本重定向到另一个检查所有(参数),但没有运气。CGI 手册页暗示这应该“正常工作”。我究竟做错了什么?
谢谢!
有几种方法可以做到这一点。
借助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
将参数的状态保存到文件中,然后从重定向页面加载该文件的状态。
my $query = CGI->new;
$query->save(\*FILEHANDLE);
my $q = CGI->new(\*INFILEHANDLE);
通过 JavaScript 进行重定向,尽管这不会让您更改参数。
my $q = CGI->new;
print $q->header();
print "window.location=\"$url\";\n\n"
在我看来,我上面列出的第一个选项是最容易做到的。
你需要使用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>
.