チェックボックスのリストがあります。選択したチェックボックスのリストを 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 要素に割り当てるだけです。
それを行う正しい方法は何ですか?