我有一个复选框列表。我正在尝试将选定复选框的列表传递给 perl 脚本。我正在使用以下代码获取复选框列表:
function exec(){
var checkedValue = "";
var inputElements = document.getElementsByTagName('input');
for(var i=0; inputElements[i]; i++){
if(inputElements[i].className==="chk" &&
inputElements[i].checked){
checkedValue += inputElements[i].value;
if (inputElements[i+1])
checkedValue += ", ";
else
checkedValue += "";
}
}
然后我将“checkedValue”传递给 perl 脚本,如下所示:
self.location='/cgi-bin/ATMRunJob.pl?tcs='+checkedValue;
在 perl 脚本中,我读取数组如下:
our @testCasesToRun = $var->param("tcs");
然后将其分配给哈希,如下所示:
my $runSpec = {
TestCasesToRun => @testCasesToRun
};
但是,当我在浏览器中加载页面时出现以下错误:
Failed TestLimits() with error: [hash: k=TestCasesToRun, v=1,]:[array]:Value is not an array ref
In check against following TLS:
[
'hr',
{
'OptDefaults' => {
'JobRunningGroupName' => 'astbluetooth',
'RunMode' => 'Queue',
'CountTowardsReporting' => 1,
'JobOwnerGroupName' => 'astbluetooth',
'SelectSetupTeardown' => 1
},
'Optional' => {
'TestCasesToRun' => [
'ar',
undef,
undef,
[
'r',
1,
undef
]
],
我是 perl 和 CGI 脚本的新手。我怎么能绕过这个错误?
注意:为简洁起见,所有代码片段都已缩短,但仍描绘了问题的本质。
编辑:我想做的是这个。用户从他想要执行的复选框列表中选择测试用例列表。我获取所有选定测试用例的测试用例 ID,并将其传递给 perl 脚本。在 perl 脚本中,我只需要将这些选定的测试用例 id 分配给 runspec 哈希中的 TestCasesToRun 元素。
这样做的正确方法是什么?